* remove get() with string pt 1 * remove get() with string pt 2 * fix typo * fix some null exceptions in get() * fixup code style
		
			
				
	
	
		
			126 lines
		
	
	
		
			No EOL
		
	
	
		
			3.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			No EOL
		
	
	
		
			3.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <ModalDialog
 | |
|   :id
 | |
|   :label
 | |
|   :title
 | |
|   background="var(--main-bg)"
 | |
| >
 | |
|   <GenericDialogList :items on:click="onClick(event)"/>
 | |
| </ModalDialog>
 | |
| <script>
 | |
| import ModalDialog from './ModalDialog.html'
 | |
| import { store } from '../../../_store/store'
 | |
| import GenericDialogList from './GenericDialogList.html'
 | |
| import { setAccountFollowed } from '../../../_actions/follow'
 | |
| import { doDeleteStatus } from '../../../_actions/delete'
 | |
| import { show } from '../helpers/showDialog'
 | |
| import { close } from '../helpers/closeDialog'
 | |
| import { oncreate } from '../helpers/onCreateDialog'
 | |
| import { setAccountBlocked } from '../../../_actions/block'
 | |
| import { setAccountMuted } from '../../../_actions/mute'
 | |
| 
 | |
| export default {
 | |
|   oncreate,
 | |
|   computed: {
 | |
|     relationship: ($currentAccountRelationship) => $currentAccountRelationship,
 | |
|     account: ($currentAccountProfile) => $currentAccountProfile,
 | |
|     verifyCredentials: ($currentVerifyCredentials) => $currentVerifyCredentials,
 | |
|     // begin account data copypasta
 | |
|     verifyCredentialsId: (verifyCredentials) => verifyCredentials.id,
 | |
|     following: (relationship) => relationship && relationship.following,
 | |
|     followRequested: (relationship) => relationship && relationship.requested,
 | |
|     accountId: (account) => account && account.id,
 | |
|     acct: (account) => account.acct,
 | |
|     muting: (relationship) => relationship.muting,
 | |
|     blocking: (relationship) => relationship.blocking,
 | |
|     followLabel: (following, followRequested, account, acct) => {
 | |
|       if (typeof following === 'undefined' || !account) {
 | |
|         return ''
 | |
|       }
 | |
|       return (following || followRequested)
 | |
|         ? `Unfollow @${acct}`
 | |
|         : `Follow @${acct}`
 | |
|     },
 | |
|     followIcon: (following, followRequested) => {
 | |
|       return following ? '#fa-user-times' : followRequested ? '#fa-hourglass' : '#fa-user-plus'
 | |
|     },
 | |
|     blockLabel: (blocking, acct) => {
 | |
|       return blocking ? `Unblock @${acct}` : `Block @${acct}`
 | |
|     },
 | |
|     blockIcon: (blocking) => blocking ? '#fa-unlock' : '#fa-ban',
 | |
|     muteLabel: (muting, acct) => {
 | |
|       return muting ? `Unmute @${acct}` : `Mute @${acct}`
 | |
|     },
 | |
|     muteIcon: (muting) => muting ? '#fa-volume-up' : '#fa-volume-off',
 | |
|     // end account data copypasta
 | |
|     items: (blockLabel, blocking, blockIcon, muteLabel, muteIcon,
 | |
|             followLabel, followIcon, following, followRequested,
 | |
|             accountId, verifyCredentialsId) => {
 | |
|       let isUser = accountId === verifyCredentialsId
 | |
|       return [
 | |
|         isUser && {
 | |
|           key: 'delete',
 | |
|           label: 'Delete',
 | |
|           icon: '#fa-trash'
 | |
|         },
 | |
|         !isUser && !blocking && {
 | |
|           key: 'follow',
 | |
|           label: followLabel,
 | |
|           icon: followIcon
 | |
|         },
 | |
|         !isUser && {
 | |
|           key: 'block',
 | |
|           label: blockLabel,
 | |
|           icon: blockIcon
 | |
|         },
 | |
|         !isUser && !blocking && {
 | |
|           key: 'mute',
 | |
|           label: muteLabel,
 | |
|           icon: muteIcon
 | |
|         }
 | |
| 
 | |
|       ].filter(Boolean)
 | |
|     }
 | |
|   },
 | |
|   components: {
 | |
|     ModalDialog,
 | |
|     GenericDialogList
 | |
|   },
 | |
|   store: () => store,
 | |
|   methods: {
 | |
|     show,
 | |
|     close,
 | |
|     onClick(item) {
 | |
|       switch (item.key) {
 | |
|         case 'delete':
 | |
|           return this.onDeleteClicked()
 | |
|         case 'follow':
 | |
|           return this.onFollowClicked()
 | |
|         case 'block':
 | |
|           return this.onBlockClicked()
 | |
|         case 'mute':
 | |
|           return this.onMuteClicked()
 | |
|       }
 | |
|     },
 | |
|     async onDeleteClicked() {
 | |
|       let { statusId } = this.get()
 | |
|       this.close()
 | |
|       await doDeleteStatus(statusId)
 | |
|     },
 | |
|     async onFollowClicked() {
 | |
|       let { accountId, following } = this.get()
 | |
|       this.close()
 | |
|       await setAccountFollowed(accountId, !following, true)
 | |
|     },
 | |
|     async onBlockClicked() {
 | |
|       let { accountId, blocking } = this.get()
 | |
|       this.close()
 | |
|       await setAccountBlocked(accountId, !blocking, true)
 | |
|     },
 | |
|     async onMuteClicked() {
 | |
|       let { accountId, muting } = this.get()
 | |
|       this.close()
 | |
|       await setAccountMuted(accountId, !muting, true)
 | |
|     }
 | |
|   }
 | |
| }
 | |
| </script> |