parent
							
								
									fa4dd59f01
								
							
						
					
					
						commit
						c0d0b4dd36
					
				
					 8 changed files with 219 additions and 99 deletions
				
			
		| 
						 | 
					@ -34,5 +34,6 @@ module.exports = [
 | 
				
			||||||
  {id: 'fa-pencil', src: 'node_modules/font-awesome-svg-png/white/svg/pencil.svg', title: 'Compose'},
 | 
					  {id: 'fa-pencil', src: 'node_modules/font-awesome-svg-png/white/svg/pencil.svg', title: 'Compose'},
 | 
				
			||||||
  {id: 'fa-times', src: 'node_modules/font-awesome-svg-png/white/svg/times.svg', title: 'Close'},
 | 
					  {id: 'fa-times', src: 'node_modules/font-awesome-svg-png/white/svg/times.svg', title: 'Close'},
 | 
				
			||||||
  {id: 'fa-volume-off', src: 'node_modules/font-awesome-svg-png/white/svg/volume-off.svg', title: 'Mute'},
 | 
					  {id: 'fa-volume-off', src: 'node_modules/font-awesome-svg-png/white/svg/volume-off.svg', title: 'Mute'},
 | 
				
			||||||
  {id: 'fa-volume-up', src: 'node_modules/font-awesome-svg-png/white/svg/volume-up.svg', title: 'Unmute'}
 | 
					  {id: 'fa-volume-up', src: 'node_modules/font-awesome-svg-png/white/svg/volume-up.svg', title: 'Unmute'},
 | 
				
			||||||
 | 
					  {id: 'fa-copy', src: 'node_modules/font-awesome-svg-png/white/svg/copy.svg', title: 'Copy'}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,6 +15,7 @@
 | 
				
			||||||
    flex-direction: column;
 | 
					    flex-direction: column;
 | 
				
			||||||
    align-items: center;
 | 
					    align-items: center;
 | 
				
			||||||
    pointer-events: none;
 | 
					    pointer-events: none;
 | 
				
			||||||
 | 
					    z-index: 100000;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .toast-container {
 | 
					  .toast-container {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,4 +28,8 @@ export const importShowStatusOptionsDialog = () => import(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const importShowVideoDialog = () => import(
 | 
					export const importShowVideoDialog = () => import(
 | 
				
			||||||
  /* webpackChunkName: 'showVideoDialog' */ './creators/showVideoDialog'
 | 
					  /* webpackChunkName: 'showVideoDialog' */ './creators/showVideoDialog'
 | 
				
			||||||
 | 
					  ).then(mod => mod.default)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const importShowCopyDialog = () => import(
 | 
				
			||||||
 | 
					  /* webpackChunkName: 'showCopyDialog' */ './creators/showCopyDialog'
 | 
				
			||||||
  ).then(mod => mod.default)
 | 
					  ).then(mod => mod.default)
 | 
				
			||||||
| 
						 | 
					@ -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 } from '../asyncDialogs'
 | 
					import { importShowComposeDialog, importShowCopyDialog } 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'
 | 
				
			||||||
| 
						 | 
					@ -26,7 +26,9 @@ export default {
 | 
				
			||||||
    id: createDialogId()
 | 
					    id: createDialogId()
 | 
				
			||||||
  }),
 | 
					  }),
 | 
				
			||||||
  computed: {
 | 
					  computed: {
 | 
				
			||||||
    // begin account data copypasta
 | 
					    //
 | 
				
			||||||
 | 
					    // begin copypasta (StatusOptionsDialog.html / AccountProfileOptionsDialog.html)
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
    verifyCredentialsId: ({ verifyCredentials }) => verifyCredentials.id,
 | 
					    verifyCredentialsId: ({ verifyCredentials }) => verifyCredentials.id,
 | 
				
			||||||
    following: ({ relationship }) => relationship && relationship.following,
 | 
					    following: ({ relationship }) => relationship && relationship.following,
 | 
				
			||||||
    followRequested: ({ relationship }) => relationship && relationship.requested,
 | 
					    followRequested: ({ relationship }) => relationship && relationship.requested,
 | 
				
			||||||
| 
						 | 
					@ -42,46 +44,52 @@ export default {
 | 
				
			||||||
        ? `Unfollow @${acct}`
 | 
					        ? `Unfollow @${acct}`
 | 
				
			||||||
        : `Follow @${acct}`
 | 
					        : `Follow @${acct}`
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    followIcon: ({ following, followRequested }) => {
 | 
					    followIcon: ({ following, followRequested }) => (
 | 
				
			||||||
      return following ? '#fa-user-times' : followRequested ? '#fa-hourglass' : '#fa-user-plus'
 | 
					      following ? '#fa-user-times' : followRequested ? '#fa-hourglass' : '#fa-user-plus'
 | 
				
			||||||
    },
 | 
					    ),
 | 
				
			||||||
    blockLabel: ({ blocking, acct }) => {
 | 
					    blockLabel: ({ blocking, acct }) => (
 | 
				
			||||||
      return blocking ? `Unblock @${acct}` : `Block @${acct}`
 | 
					      blocking ? `Unblock @${acct}` : `Block @${acct}`
 | 
				
			||||||
    },
 | 
					    ),
 | 
				
			||||||
    blockIcon: ({ blocking }) => blocking ? '#fa-unlock' : '#fa-ban',
 | 
					    blockIcon: ({ blocking }) => blocking ? '#fa-unlock' : '#fa-ban',
 | 
				
			||||||
    muteLabel: ({ muting, acct }) => {
 | 
					    muteLabel: ({ muting, acct }) => (
 | 
				
			||||||
      return muting ? `Unmute @${acct}` : `Mute @${acct}`
 | 
					      muting ? `Unmute @${acct}` : `Mute @${acct}`
 | 
				
			||||||
    },
 | 
					    ),
 | 
				
			||||||
    muteIcon: ({ muting }) => muting ? '#fa-volume-up' : '#fa-volume-off',
 | 
					    muteIcon: ({ muting }) => muting ? '#fa-volume-up' : '#fa-volume-off',
 | 
				
			||||||
    // end account data copypasta
 | 
					    isUser: ({ accountId, verifyCredentialsId }) => accountId === verifyCredentialsId,
 | 
				
			||||||
    items: ({ blockLabel, blocking, blockIcon, muteLabel, muteIcon,
 | 
					    //
 | 
				
			||||||
 | 
					    // end copypasta (StatusOptionsDialog.html / AccountProfileOptionsDialog.html)
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
 | 
					    items: ({
 | 
				
			||||||
 | 
					      blockLabel, blocking, blockIcon, muteLabel, muteIcon,
 | 
				
			||||||
      followLabel, followIcon, following, followRequested,
 | 
					      followLabel, followIcon, following, followRequested,
 | 
				
			||||||
      accountId, verifyCredentialsId, acct }) => {
 | 
					      accountId, verifyCredentialsId, acct, isUser
 | 
				
			||||||
      let isUser = accountId === verifyCredentialsId
 | 
					    }) => ([
 | 
				
			||||||
      return [
 | 
					      !isUser && {
 | 
				
			||||||
        !isUser && {
 | 
					        key: 'mention',
 | 
				
			||||||
          key: 'mention',
 | 
					        label: `Mention @${acct}`,
 | 
				
			||||||
          label: `Mention @${acct}`,
 | 
					        icon: '#fa-comments'
 | 
				
			||||||
          icon: '#fa-comments'
 | 
					      },
 | 
				
			||||||
        },
 | 
					      !isUser && !blocking && {
 | 
				
			||||||
        !isUser && !blocking && {
 | 
					        key: 'follow',
 | 
				
			||||||
          key: 'follow',
 | 
					        label: followLabel,
 | 
				
			||||||
          label: followLabel,
 | 
					        icon: followIcon
 | 
				
			||||||
          icon: followIcon
 | 
					      },
 | 
				
			||||||
        },
 | 
					      !isUser && {
 | 
				
			||||||
        !isUser && {
 | 
					        key: 'block',
 | 
				
			||||||
          key: 'block',
 | 
					        label: blockLabel,
 | 
				
			||||||
          label: blockLabel,
 | 
					        icon: blockIcon
 | 
				
			||||||
          icon: blockIcon
 | 
					      },
 | 
				
			||||||
        },
 | 
					      !isUser && !blocking && {
 | 
				
			||||||
        !isUser && !blocking && {
 | 
					        key: 'mute',
 | 
				
			||||||
          key: 'mute',
 | 
					        label: muteLabel,
 | 
				
			||||||
          label: muteLabel,
 | 
					        icon: muteIcon
 | 
				
			||||||
          icon: muteIcon
 | 
					      },
 | 
				
			||||||
        }
 | 
					      {
 | 
				
			||||||
 | 
					        key: 'copy',
 | 
				
			||||||
      ].filter(Boolean)
 | 
					        label: 'Copy link to account',
 | 
				
			||||||
    }
 | 
					        icon: '#fa-copy'
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ].filter(Boolean))
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  methods: {
 | 
					  methods: {
 | 
				
			||||||
    show,
 | 
					    show,
 | 
				
			||||||
| 
						 | 
					@ -96,6 +104,8 @@ export default {
 | 
				
			||||||
          return this.onBlockClicked()
 | 
					          return this.onBlockClicked()
 | 
				
			||||||
        case 'mute':
 | 
					        case 'mute':
 | 
				
			||||||
          return this.onMuteClicked()
 | 
					          return this.onMuteClicked()
 | 
				
			||||||
 | 
					        case 'copy':
 | 
				
			||||||
 | 
					          return this.onCopyClicked()
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    async onMentionClicked () {
 | 
					    async onMentionClicked () {
 | 
				
			||||||
| 
						 | 
					@ -121,6 +131,12 @@ export default {
 | 
				
			||||||
      let { accountId, muting } = this.get()
 | 
					      let { accountId, muting } = this.get()
 | 
				
			||||||
      this.close()
 | 
					      this.close()
 | 
				
			||||||
      await setAccountMuted(accountId, !muting, true)
 | 
					      await setAccountMuted(accountId, !muting, true)
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    async onCopyClicked () {
 | 
				
			||||||
 | 
					      let { account } = this.get()
 | 
				
			||||||
 | 
					      let { url } = account
 | 
				
			||||||
 | 
					      let showCopyDialog = await importShowCopyDialog()
 | 
				
			||||||
 | 
					      showCopyDialog(url)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  components: {
 | 
					  components: {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										64
									
								
								routes/_components/dialog/components/CopyDialog.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								routes/_components/dialog/components/CopyDialog.html
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,64 @@
 | 
				
			||||||
 | 
					<ModalDialog
 | 
				
			||||||
 | 
					  {id}
 | 
				
			||||||
 | 
					  {label}
 | 
				
			||||||
 | 
					  {title}
 | 
				
			||||||
 | 
					  background="var(--main-bg)"
 | 
				
			||||||
 | 
					>
 | 
				
			||||||
 | 
					  <form class="copy-dialog-form">
 | 
				
			||||||
 | 
					    <input value={text}
 | 
				
			||||||
 | 
					           ref:input
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					    <button type="button" on:click="onClick()">
 | 
				
			||||||
 | 
					      Copy
 | 
				
			||||||
 | 
					    </button>
 | 
				
			||||||
 | 
					  </form>
 | 
				
			||||||
 | 
					</ModalDialog>
 | 
				
			||||||
 | 
					<style>
 | 
				
			||||||
 | 
					  .copy-dialog-form {
 | 
				
			||||||
 | 
					    display: grid;
 | 
				
			||||||
 | 
					    grid-template-rows: min-content min-content;
 | 
				
			||||||
 | 
					    grid-template-columns: 1fr;
 | 
				
			||||||
 | 
					    grid-gap: 10px;
 | 
				
			||||||
 | 
					    padding: 10px 20px;
 | 
				
			||||||
 | 
					    width: 400px;
 | 
				
			||||||
 | 
					    max-width: calc(100vw - 40px);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					  import ModalDialog from './ModalDialog.html'
 | 
				
			||||||
 | 
					  import { show } from '../helpers/showDialog'
 | 
				
			||||||
 | 
					  import { close } from '../helpers/closeDialog'
 | 
				
			||||||
 | 
					  import { oncreate as onCreateDialog } from '../helpers/onCreateDialog'
 | 
				
			||||||
 | 
					  import { toast } from '../../../_utils/toast'
 | 
				
			||||||
 | 
					  import { doubleRAF } from '../../../_utils/doubleRAF'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  export default {
 | 
				
			||||||
 | 
					    oncreate () {
 | 
				
			||||||
 | 
					      onCreateDialog.call(this)
 | 
				
			||||||
 | 
					      let { text } = this.get()
 | 
				
			||||||
 | 
					      let { input } = this.refs
 | 
				
			||||||
 | 
					      // double raf is to work around a11y-dialog trying to set the input
 | 
				
			||||||
 | 
					      doubleRAF(() => {
 | 
				
			||||||
 | 
					        input.focus()
 | 
				
			||||||
 | 
					        input.setSelectionRange(0, text.length)
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    methods: {
 | 
				
			||||||
 | 
					      show,
 | 
				
			||||||
 | 
					      close,
 | 
				
			||||||
 | 
					      onClick () {
 | 
				
			||||||
 | 
					        let { input } = this.refs
 | 
				
			||||||
 | 
					        input.select()
 | 
				
			||||||
 | 
					        document.execCommand('copy')
 | 
				
			||||||
 | 
					        toast.say('Copied to clipboard')
 | 
				
			||||||
 | 
					        this.close()
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    data: () => ({
 | 
				
			||||||
 | 
					      text: ''
 | 
				
			||||||
 | 
					    }),
 | 
				
			||||||
 | 
					    components: {
 | 
				
			||||||
 | 
					      ModalDialog
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
| 
						 | 
					@ -18,24 +18,27 @@ 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'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  oncreate,
 | 
					  oncreate,
 | 
				
			||||||
  computed: {
 | 
					  computed: {
 | 
				
			||||||
    relationship: ({ $currentAccountRelationship }) => $currentAccountRelationship,
 | 
					    relationship: ({$currentAccountRelationship}) => $currentAccountRelationship,
 | 
				
			||||||
    account: ({ $currentAccountProfile }) => $currentAccountProfile,
 | 
					    account: ({$currentAccountProfile}) => $currentAccountProfile,
 | 
				
			||||||
    verifyCredentials: ({ $currentVerifyCredentials }) => $currentVerifyCredentials,
 | 
					    verifyCredentials: ({$currentVerifyCredentials}) => $currentVerifyCredentials,
 | 
				
			||||||
    statusId: ({ status }) => status.id,
 | 
					    statusId: ({status}) => status.id,
 | 
				
			||||||
    pinned: ({ status }) => status.pinned,
 | 
					    pinned: ({status}) => status.pinned,
 | 
				
			||||||
    // begin account data copypasta
 | 
					    //
 | 
				
			||||||
    verifyCredentialsId: ({ verifyCredentials }) => verifyCredentials.id,
 | 
					    // begin copypasta (StatusOptionsDialog.html / AccountProfileOptionsDialog.html)
 | 
				
			||||||
    following: ({ relationship }) => relationship && relationship.following,
 | 
					    //
 | 
				
			||||||
    followRequested: ({ relationship }) => relationship && relationship.requested,
 | 
					    verifyCredentialsId: ({verifyCredentials}) => verifyCredentials.id,
 | 
				
			||||||
    accountId: ({ account }) => account && account.id,
 | 
					    following: ({relationship}) => relationship && relationship.following,
 | 
				
			||||||
    acct: ({ account }) => account.acct,
 | 
					    followRequested: ({relationship}) => relationship && relationship.requested,
 | 
				
			||||||
    muting: ({ relationship }) => relationship.muting,
 | 
					    accountId: ({account}) => account && account.id,
 | 
				
			||||||
    blocking: ({ relationship }) => relationship.blocking,
 | 
					    acct: ({account}) => account.acct,
 | 
				
			||||||
    followLabel: ({ following, followRequested, account, acct }) => {
 | 
					    muting: ({relationship}) => relationship.muting,
 | 
				
			||||||
 | 
					    blocking: ({relationship}) => relationship.blocking,
 | 
				
			||||||
 | 
					    followLabel: ({following, followRequested, account, acct}) => {
 | 
				
			||||||
      if (typeof following === 'undefined' || !account) {
 | 
					      if (typeof following === 'undefined' || !account) {
 | 
				
			||||||
        return ''
 | 
					        return ''
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
| 
						 | 
					@ -43,51 +46,57 @@ export default {
 | 
				
			||||||
        ? `Unfollow @${acct}`
 | 
					        ? `Unfollow @${acct}`
 | 
				
			||||||
        : `Follow @${acct}`
 | 
					        : `Follow @${acct}`
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    followIcon: ({ following, followRequested }) => {
 | 
					    followIcon: ({following, followRequested}) => (
 | 
				
			||||||
      return following ? '#fa-user-times' : followRequested ? '#fa-hourglass' : '#fa-user-plus'
 | 
					      following ? '#fa-user-times' : followRequested ? '#fa-hourglass' : '#fa-user-plus'
 | 
				
			||||||
    },
 | 
					    ),
 | 
				
			||||||
    blockLabel: ({ blocking, acct }) => {
 | 
					    blockLabel: ({blocking, acct}) => (
 | 
				
			||||||
      return blocking ? `Unblock @${acct}` : `Block @${acct}`
 | 
					      blocking ? `Unblock @${acct}` : `Block @${acct}`
 | 
				
			||||||
    },
 | 
					    ),
 | 
				
			||||||
    blockIcon: ({ blocking }) => blocking ? '#fa-unlock' : '#fa-ban',
 | 
					    blockIcon: ({blocking}) => blocking ? '#fa-unlock' : '#fa-ban',
 | 
				
			||||||
    muteLabel: ({ muting, acct }) => {
 | 
					    muteLabel: ({muting, acct}) => (
 | 
				
			||||||
      return muting ? `Unmute @${acct}` : `Mute @${acct}`
 | 
					      muting ? `Unmute @${acct}` : `Mute @${acct}`
 | 
				
			||||||
    },
 | 
					    ),
 | 
				
			||||||
    muteIcon: ({ muting }) => muting ? '#fa-volume-up' : '#fa-volume-off',
 | 
					    muteIcon: ({muting}) => muting ? '#fa-volume-up' : '#fa-volume-off',
 | 
				
			||||||
    // end account data copypasta
 | 
					    isUser: ({accountId, verifyCredentialsId}) => accountId === verifyCredentialsId,
 | 
				
			||||||
    isUser: ({ accountId, verifyCredentialsId }) => accountId === verifyCredentialsId,
 | 
					    //
 | 
				
			||||||
    pinLabel: ({ pinned, isUser }) => isUser ? (pinned ? 'Unpin from profile' : 'Pin to profile') : '',
 | 
					    // end copypasta (StatusOptionsDialog.html / AccountProfileOptionsDialog.html)
 | 
				
			||||||
    items: ({ blockLabel, blocking, blockIcon, muteLabel, muteIcon, followLabel, followIcon,
 | 
					    //
 | 
				
			||||||
      following, followRequested, pinLabel, isUser }) => {
 | 
					    pinLabel: ({pinned, isUser}) => isUser ? (pinned ? 'Unpin from profile' : 'Pin to profile') : '',
 | 
				
			||||||
      return [
 | 
					    items: ({
 | 
				
			||||||
        isUser && {
 | 
					      blockLabel, blocking, blockIcon, muteLabel, muteIcon, followLabel, followIcon,
 | 
				
			||||||
          key: 'delete',
 | 
					      following, followRequested, pinLabel, isUser
 | 
				
			||||||
          label: 'Delete',
 | 
					    }) => ([
 | 
				
			||||||
          icon: '#fa-trash'
 | 
					      isUser && {
 | 
				
			||||||
        },
 | 
					        key: 'delete',
 | 
				
			||||||
        isUser && {
 | 
					        label: 'Delete',
 | 
				
			||||||
          key: 'pin',
 | 
					        icon: '#fa-trash'
 | 
				
			||||||
          label: pinLabel,
 | 
					      },
 | 
				
			||||||
          icon: '#fa-thumb-tack'
 | 
					      isUser && {
 | 
				
			||||||
        },
 | 
					        key: 'pin',
 | 
				
			||||||
        !isUser && !blocking && {
 | 
					        label: pinLabel,
 | 
				
			||||||
          key: 'follow',
 | 
					        icon: '#fa-thumb-tack'
 | 
				
			||||||
          label: followLabel,
 | 
					      },
 | 
				
			||||||
          icon: followIcon
 | 
					      !isUser && !blocking && {
 | 
				
			||||||
        },
 | 
					        key: 'follow',
 | 
				
			||||||
        !isUser && {
 | 
					        label: followLabel,
 | 
				
			||||||
          key: 'block',
 | 
					        icon: followIcon
 | 
				
			||||||
          label: blockLabel,
 | 
					      },
 | 
				
			||||||
          icon: blockIcon
 | 
					      !isUser && {
 | 
				
			||||||
        },
 | 
					        key: 'block',
 | 
				
			||||||
        !isUser && !blocking && {
 | 
					        label: blockLabel,
 | 
				
			||||||
          key: 'mute',
 | 
					        icon: blockIcon
 | 
				
			||||||
          label: muteLabel,
 | 
					      },
 | 
				
			||||||
          icon: muteIcon
 | 
					      !isUser && !blocking && {
 | 
				
			||||||
        }
 | 
					        key: 'mute',
 | 
				
			||||||
 | 
					        label: muteLabel,
 | 
				
			||||||
      ].filter(Boolean)
 | 
					        icon: muteIcon
 | 
				
			||||||
    }
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        key: 'copy',
 | 
				
			||||||
 | 
					        label: 'Copy link to toot',
 | 
				
			||||||
 | 
					        icon: '#fa-copy'
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ].filter(Boolean))
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  components: {
 | 
					  components: {
 | 
				
			||||||
    ModalDialog,
 | 
					    ModalDialog,
 | 
				
			||||||
| 
						 | 
					@ -109,6 +118,8 @@ export default {
 | 
				
			||||||
          return this.onBlockClicked()
 | 
					          return this.onBlockClicked()
 | 
				
			||||||
        case 'mute':
 | 
					        case 'mute':
 | 
				
			||||||
          return this.onMuteClicked()
 | 
					          return this.onMuteClicked()
 | 
				
			||||||
 | 
					        case 'copy':
 | 
				
			||||||
 | 
					          return this.onCopyClicked()
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    async onDeleteClicked () {
 | 
					    async onDeleteClicked () {
 | 
				
			||||||
| 
						 | 
					@ -135,6 +146,12 @@ export default {
 | 
				
			||||||
      let { accountId, muting } = this.get()
 | 
					      let { accountId, muting } = this.get()
 | 
				
			||||||
      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()
 | 
				
			||||||
 | 
					      showCopyDialog(url)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										16
									
								
								routes/_components/dialog/creators/showCopyDialog.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								routes/_components/dialog/creators/showCopyDialog.js
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					import CopyDialog from '../components/CopyDialog.html'
 | 
				
			||||||
 | 
					import { createDialogElement } from '../helpers/createDialogElement'
 | 
				
			||||||
 | 
					import { createDialogId } from '../helpers/createDialogId'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default function showCopyDialog (text) {
 | 
				
			||||||
 | 
					  let dialog = new CopyDialog({
 | 
				
			||||||
 | 
					    target: createDialogElement(),
 | 
				
			||||||
 | 
					    data: {
 | 
				
			||||||
 | 
					      id: createDialogId(),
 | 
				
			||||||
 | 
					      label: 'Copy dialog',
 | 
				
			||||||
 | 
					      title: 'Copy link',
 | 
				
			||||||
 | 
					      text
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					  dialog.show()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -117,6 +117,7 @@ if (!localStorage.store_currentInstance) {
 | 
				
			||||||
<symbol id="fa-times" viewBox="0 0 1792 1792"><title>Close</title><path d="M1490 1322q0 40-28 68l-136 136q-28 28-68 28t-68-28l-294-294-294 294q-28 28-68 28t-68-28l-136-136q-28-28-28-68t28-68l294-294-294-294q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 294 294-294q28-28 68-28t68 28l136 136q28 28 28 68t-28 68l-294 294 294 294q28 28 28 68z"></path></symbol>
 | 
					<symbol id="fa-times" viewBox="0 0 1792 1792"><title>Close</title><path d="M1490 1322q0 40-28 68l-136 136q-28 28-68 28t-68-28l-294-294-294 294q-28 28-68 28t-68-28l-136-136q-28-28-28-68t28-68l294-294-294-294q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 294 294-294q28-28 68-28t68 28l136 136q28 28 28 68t-28 68l-294 294 294 294q28 28 28 68z"></path></symbol>
 | 
				
			||||||
<symbol id="fa-volume-off" viewBox="0 0 1792 1792"><title>Mute</title><path d="M1280 352v1088q0 26-19 45t-45 19-45-19l-333-333H576q-26 0-45-19t-19-45V704q0-26 19-45t45-19h262l333-333q19-19 45-19t45 19 19 45z"></path></symbol>
 | 
					<symbol id="fa-volume-off" viewBox="0 0 1792 1792"><title>Mute</title><path d="M1280 352v1088q0 26-19 45t-45 19-45-19l-333-333H576q-26 0-45-19t-19-45V704q0-26 19-45t45-19h262l333-333q19-19 45-19t45 19 19 45z"></path></symbol>
 | 
				
			||||||
<symbol id="fa-volume-up" viewBox="0 0 1792 1792"><title>Unmute</title><path d="M832 352v1088q0 26-19 45t-45 19-45-19l-333-333H128q-26 0-45-19t-19-45V704q0-26 19-45t45-19h262l333-333q19-19 45-19t45 19 19 45zm384 544q0 76-42.5 141.5T1061 1131q-10 5-25 5-26 0-45-18.5t-19-45.5q0-21 12-35.5t29-25 34-23 29-36 12-56.5-12-56.5-29-36-34-23-29-25-12-35.5q0-27 19-45.5t45-18.5q15 0 25 5 70 27 112.5 93t42.5 142zm256 0q0 153-85 282.5T1162 1367q-13 5-25 5-27 0-46-19t-19-45q0-39 39-59 56-29 76-44 74-54 115.5-135.5T1344 896t-41.5-173.5T1187 587q-20-15-76-44-39-20-39-59 0-26 19-45t45-19q13 0 26 5 140 59 225 188.5t85 282.5zm256 0q0 230-127 422.5T1263 1602q-13 5-26 5-26 0-45-19t-19-45q0-36 39-59 7-4 22.5-10.5t22.5-10.5q46-25 82-51 123-91 192-227t69-289-69-289-192-227q-36-26-82-51-7-4-22.5-10.5T1212 308q-39-23-39-59 0-26 19-45t45-19q13 0 26 5 211 91 338 283.5T1728 896z"></path></symbol>
 | 
					<symbol id="fa-volume-up" viewBox="0 0 1792 1792"><title>Unmute</title><path d="M832 352v1088q0 26-19 45t-45 19-45-19l-333-333H128q-26 0-45-19t-19-45V704q0-26 19-45t45-19h262l333-333q19-19 45-19t45 19 19 45zm384 544q0 76-42.5 141.5T1061 1131q-10 5-25 5-26 0-45-18.5t-19-45.5q0-21 12-35.5t29-25 34-23 29-36 12-56.5-12-56.5-29-36-34-23-29-25-12-35.5q0-27 19-45.5t45-18.5q15 0 25 5 70 27 112.5 93t42.5 142zm256 0q0 153-85 282.5T1162 1367q-13 5-25 5-27 0-46-19t-19-45q0-39 39-59 56-29 76-44 74-54 115.5-135.5T1344 896t-41.5-173.5T1187 587q-20-15-76-44-39-20-39-59 0-26 19-45t45-19q13 0 26 5 140 59 225 188.5t85 282.5zm256 0q0 230-127 422.5T1263 1602q-13 5-26 5-26 0-45-19t-19-45q0-36 39-59 7-4 22.5-10.5t22.5-10.5q46-25 82-51 123-91 192-227t69-289-69-289-192-227q-36-26-82-51-7-4-22.5-10.5T1212 308q-39-23-39-59 0-26 19-45t45-19q13 0 26 5 211 91 338 283.5T1728 896z"></path></symbol>
 | 
				
			||||||
 | 
					<symbol id="fa-copy" viewBox="0 0 1792 1792"><title>Copy</title><path d="M1696 384q40 0 68 28t28 68v1216q0 40-28 68t-68 28H736q-40 0-68-28t-28-68v-288H96q-40 0-68-28t-28-68V640q0-40 20-88t48-76L476 68q28-28 76-48t88-20h416q40 0 68 28t28 68v328q68-40 128-40h416zm-544 213L853 896h299V597zM512 213L213 512h299V213zm196 647l316-316V128H640v416q0 40-28 68t-68 28H128v640h512v-256q0-40 20-88t48-76zm956 804V512h-384v416q0 40-28 68t-68 28H768v640h896z"></path></symbol>
 | 
				
			||||||
</svg><!-- end insert svg here -->
 | 
					</svg><!-- end insert svg here -->
 | 
				
			||||||
  </svg>
 | 
					  </svg>
 | 
				
			||||||
  <!-- The application will be rendered inside this element,
 | 
					  <!-- The application will be rendered inside this element,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue