Use lookup endpoint to obtain users by nickname
This commit is contained in:
parent
2afe1539d9
commit
09f9640be1
3 changed files with 38 additions and 5 deletions
|
|
@ -50,6 +50,7 @@ const MASTODON_USER_HOME_TIMELINE_URL = '/api/v1/timelines/home'
|
|||
const MASTODON_STATUS_URL = id => `/api/v1/statuses/${id}`
|
||||
const MASTODON_STATUS_CONTEXT_URL = id => `/api/v1/statuses/${id}/context`
|
||||
const MASTODON_USER_URL = '/api/v1/accounts'
|
||||
const MASTODON_USER_LOOKUP_URL = '/api/v1/accounts/lookup'
|
||||
const MASTODON_USER_RELATIONSHIPS_URL = '/api/v1/accounts/relationships'
|
||||
const MASTODON_USER_TIMELINE_URL = id => `/api/v1/accounts/${id}/statuses`
|
||||
const MASTODON_LIST_URL = id => `/api/v1/lists/${id}`
|
||||
|
|
@ -318,6 +319,25 @@ const fetchUser = ({ id, credentials }) => {
|
|||
.then((data) => parseUser(data))
|
||||
}
|
||||
|
||||
const fetchUserByName = ({ name, credentials }) => {
|
||||
return promisedRequest({
|
||||
url: MASTODON_USER_LOOKUP_URL,
|
||||
credentials,
|
||||
params: { acct: name }
|
||||
})
|
||||
.then(data => data.id)
|
||||
.catch(error => {
|
||||
if (error && error.statusCode === 404) {
|
||||
// Either the backend does not support lookup endpoint,
|
||||
// or there is no user with such name. Fallback and treat name as id.
|
||||
return name
|
||||
} else {
|
||||
throw error
|
||||
}
|
||||
})
|
||||
.then(id => fetchUser({ id, credentials }))
|
||||
}
|
||||
|
||||
const fetchUserRelationship = ({ id, credentials }) => {
|
||||
const url = `${MASTODON_USER_RELATIONSHIPS_URL}/?id=${id}`
|
||||
return fetch(url, { headers: authHeaders(credentials) })
|
||||
|
|
@ -1481,6 +1501,7 @@ const apiService = {
|
|||
blockUser,
|
||||
unblockUser,
|
||||
fetchUser,
|
||||
fetchUserByName,
|
||||
fetchUserRelationship,
|
||||
favorite,
|
||||
unfavorite,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue