feat: Report posts (#2184)
This commit is contained in:
parent
5ea09d323f
commit
34aca66fef
8 changed files with 462 additions and 70 deletions
|
@ -12,6 +12,9 @@ export const mediaPreviewIndex = ref(0)
|
|||
export const statusEdit = ref<mastodon.v1.StatusEdit>()
|
||||
export const dialogDraftKey = ref<string>()
|
||||
|
||||
export const reportAccount = ref<mastodon.v1.Account>()
|
||||
export const reportStatus = ref<mastodon.v1.Status>()
|
||||
|
||||
export const commandPanelInput = ref('')
|
||||
|
||||
export const isFirstVisit = useLocalStorage(STORAGE_KEY_FIRST_VISIT, !process.mock)
|
||||
|
@ -26,6 +29,7 @@ export const isCommandPanelOpen = ref(false)
|
|||
export const isConfirmDialogOpen = ref(false)
|
||||
export const isErrorDialogOpen = ref(false)
|
||||
export const isFavouritedBoostedByDialogOpen = ref(false)
|
||||
export const isReportDialogOpen = ref(false)
|
||||
|
||||
export const lastPublishDialogStatus = ref<mastodon.v1.Status | null>(null)
|
||||
|
||||
|
@ -148,3 +152,13 @@ export function toggleKeyboardShortcuts() {
|
|||
export function closeKeyboardShortcuts() {
|
||||
isKeyboardShortcutsDialogOpen.value = false
|
||||
}
|
||||
|
||||
export function openReportDialog(account: mastodon.v1.Account, status?: mastodon.v1.Status) {
|
||||
reportAccount.value = account
|
||||
reportStatus.value = status
|
||||
isReportDialogOpen.value = true
|
||||
}
|
||||
|
||||
export function closeReportDialog() {
|
||||
isReportDialogOpen.value = false
|
||||
}
|
||||
|
|
|
@ -31,3 +31,68 @@ async function fetchRelationships() {
|
|||
for (let i = 0; i < requested.length; i++)
|
||||
requested[i][1].value = relationships[i]
|
||||
}
|
||||
|
||||
export async function toggleFollowAccount(relationship: mastodon.v1.Relationship, account: mastodon.v1.Account) {
|
||||
const { client } = $(useMasto())
|
||||
const i18n = useNuxtApp().$i18n
|
||||
|
||||
if (relationship!.following) {
|
||||
if (await openConfirmDialog({
|
||||
title: i18n.t('confirm.unfollow.title'),
|
||||
confirm: i18n.t('confirm.unfollow.confirm'),
|
||||
cancel: i18n.t('confirm.unfollow.cancel'),
|
||||
}) !== 'confirm')
|
||||
return
|
||||
}
|
||||
relationship!.following = !relationship!.following
|
||||
relationship = await client.v1.accounts[relationship!.following ? 'follow' : 'unfollow'](account.id)
|
||||
}
|
||||
|
||||
export async function toggleMuteAccount(relationship: mastodon.v1.Relationship, account: mastodon.v1.Account) {
|
||||
const { client } = $(useMasto())
|
||||
const i18n = useNuxtApp().$i18n
|
||||
|
||||
if (!relationship!.muting && await openConfirmDialog({
|
||||
title: i18n.t('confirm.mute_account.title', [account.acct]),
|
||||
confirm: i18n.t('confirm.mute_account.confirm'),
|
||||
cancel: i18n.t('confirm.mute_account.cancel'),
|
||||
}) !== 'confirm')
|
||||
return
|
||||
|
||||
relationship!.muting = !relationship!.muting
|
||||
relationship = relationship!.muting
|
||||
? await client.v1.accounts.mute(account.id, {
|
||||
// TODO support more options
|
||||
})
|
||||
: await client.v1.accounts.unmute(account.id)
|
||||
}
|
||||
|
||||
export async function toggleBlockAccount(relationship: mastodon.v1.Relationship, account: mastodon.v1.Account) {
|
||||
const { client } = $(useMasto())
|
||||
const i18n = useNuxtApp().$i18n
|
||||
|
||||
if (!relationship!.blocking && await openConfirmDialog({
|
||||
title: i18n.t('confirm.block_account.title', [account.acct]),
|
||||
confirm: i18n.t('confirm.block_account.confirm'),
|
||||
cancel: i18n.t('confirm.block_account.cancel'),
|
||||
}) !== 'confirm')
|
||||
return
|
||||
|
||||
relationship!.blocking = !relationship!.blocking
|
||||
relationship = await client.v1.accounts[relationship!.blocking ? 'block' : 'unblock'](account.id)
|
||||
}
|
||||
|
||||
export async function toggleBlockDomain(relationship: mastodon.v1.Relationship, account: mastodon.v1.Account) {
|
||||
const { client } = $(useMasto())
|
||||
const i18n = useNuxtApp().$i18n
|
||||
|
||||
if (!relationship!.domainBlocking && await openConfirmDialog({
|
||||
title: i18n.t('confirm.block_domain.title', [getServerName(account)]),
|
||||
confirm: i18n.t('confirm.block_domain.confirm'),
|
||||
cancel: i18n.t('confirm.block_domain.cancel'),
|
||||
}) !== 'confirm')
|
||||
return
|
||||
|
||||
relationship!.domainBlocking = !relationship!.domainBlocking
|
||||
await client.v1.domainBlocks[relationship!.domainBlocking ? 'block' : 'unblock'](getServerName(account))
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue