<ModalDialog :label :shown :closed :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' export default { computed: { relationship: ($currentAccountRelationship) => $currentAccountRelationship, account: ($currentAccountProfile) => $currentAccountProfile, verifyCredentials: ($currentVerifyCredentials) => $currentVerifyCredentials, verifyCredentialsId: (verifyCredentials) => verifyCredentials.id, following: (relationship) => relationship && relationship.following, followRequested: (relationship) => relationship && relationship.requested, accountName: (account) => account && (account.display_name || account.acct), accountId: (account) => account && account.id, followLabel: (following, followRequested, accountName) => { if (typeof following === 'undefined' || !accountName) { return '' } return (following || followRequested) ? `Unfollow ${accountName}` : `Follow ${accountName}` }, items: (followLabel, following, followRequested, accountId, verifyCredentialsId) => ( [ accountId !== verifyCredentialsId && { key: 'follow', label: followLabel, icon: following ? '#fa-user-times' : followRequested ? '#fa-hourglass' : '#fa-user-plus' }, accountId === verifyCredentialsId && { key: 'delete', label: 'Delete', icon: '#fa-trash' } ].filter(Boolean) ) }, components: { ModalDialog, GenericDialogList }, store: () => store, methods: { async show() { this.set({shown: true}) }, async onClick(item) { if (item.key === 'follow') { let accountId = this.get('accountId') let following = this.get('following') await setAccountFollowed(accountId, !following, true) this.set({closed: true}) } else if (item.key === 'delete') { let statusId = this.get('statusId') await doDeleteStatus(statusId) this.set({closed: true}) } } } } </script>