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
Signed by untrusted user who does not match committer: nbsp
GPG key ID: 9D3F2B64F2341B62
2 changed files with 24 additions and 4 deletions

View file

@ -94,14 +94,21 @@ const ListNew = {
}) })
}, },
updateList () { updateList () {
// the API has two different endpoints for "updating the list name" and // the API has three different endpoints: one for "updating the list name",
// "updating the accounts on the list". // 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.updateList({ id: this.id, title: this.title })
this.$store.state.api.backendInteractor.addAccountsToList({ this.$store.state.api.backendInteractor.addAccountsToList({
id: this.id, accountIds: this.selectedUserIds id: this.id, accountIds: this.selectedUserIds
}).then(() => {
this.$router.push({ name: 'list-timeline', params: { id: this.id } })
}) })
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 } })
})
}, },
deleteList () { deleteList () {
this.$store.state.api.backendInteractor.deleteList({ id: this.id }) this.$store.state.api.backendInteractor.deleteList({ 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 deleteList = ({ id, credentials }) => {
const url = MASTODON_LIST_URL(id) const url = MASTODON_LIST_URL(id)
return fetch(url, { return fetch(url, {
@ -1427,6 +1439,7 @@ const apiService = {
updateList, updateList,
getListAccounts, getListAccounts,
addAccountsToList, addAccountsToList,
removeAccountsFromList,
deleteList, deleteList,
approveUser, approveUser,
denyUser, denyUser,