Allow removing accounts from list

This commit is contained in:
Sol Fisher Romanoff 2022-06-16 10:04:33 +03:00
parent dea803468f
commit 92fac1cd9f
No known key found for this signature in database
GPG key ID: 9D3F2B64F2341B62
2 changed files with 24 additions and 4 deletions

View file

@ -94,11 +94,18 @@ const ListNew = {
})
},
updateList () {
// the API has two different endpoints for "updating the list name" and
// "updating the accounts on the list".
// the API has three different endpoints: one for "updating the list name",
// one for "adding new accounts to the list" and one for "removing
// accounts from the list".
this.$store.state.api.backendInteractor.updateList({ id: this.id, title: this.title })
this.$store.state.api.backendInteractor.addAccountsToList({
id: this.id, accountIds: this.selectedUserIds
})
this.$store.state.api.backendInteractor.getListAccounts({ id: this.id })
.then((data) => {
this.$store.state.api.backendInteractor.removeAccountsFromList({
id: this.id, accountIds: data.filter(x => !this.selectedUserIds.includes(x))
})
}).then(() => {
this.$router.push({ name: 'list-timeline', params: { id: this.id } })
})

View file

@ -441,6 +441,18 @@ const addAccountsToList = ({ id, accountIds, credentials }) => {
})
}
const removeAccountsFromList = ({ id, accountIds, credentials }) => {
const url = MASTODON_LIST_ACCOUNTS_URL(id)
const headers = authHeaders(credentials)
headers['Content-Type'] = 'application/json'
return fetch(url, {
method: 'DELETE',
headers: headers,
body: JSON.stringify({ account_ids: accountIds })
})
}
const deleteList = ({ id, credentials }) => {
const url = MASTODON_LIST_URL(id)
return fetch(url, {
@ -1427,6 +1439,7 @@ const apiService = {
updateList,
getListAccounts,
addAccountsToList,
removeAccountsFromList,
deleteList,
approveUser,
denyUser,