Merge branch 'develop' into 'brendenbice1222/pleroma-fe-issues/pleroma-fe-202-show-boosted-users'
# Conflicts: # src/services/api/api.service.js
This commit is contained in:
commit
b1bd5bd08e
22 changed files with 373 additions and 281 deletions
|
@ -3,12 +3,10 @@ const LOGIN_URL = '/api/account/verify_credentials.json'
|
|||
const ALL_FOLLOWING_URL = '/api/qvitter/allfollowing'
|
||||
const MENTIONS_URL = '/api/statuses/mentions.json'
|
||||
const REGISTRATION_URL = '/api/account/register.json'
|
||||
const AVATAR_UPDATE_URL = '/api/qvitter/update_avatar.json'
|
||||
const BG_UPDATE_URL = '/api/qvitter/update_background_image.json'
|
||||
const BANNER_UPDATE_URL = '/api/account/update_profile_banner.json'
|
||||
const PROFILE_UPDATE_URL = '/api/account/update_profile.json'
|
||||
const EXTERNAL_PROFILE_URL = '/api/externalprofile/show.json'
|
||||
const QVITTER_USER_NOTIFICATIONS_READ_URL = '/api/qvitter/statuses/notifications/read.json'
|
||||
const BLOCKS_IMPORT_URL = '/api/pleroma/blocks_import'
|
||||
const FOLLOW_IMPORT_URL = '/api/pleroma/follow_import'
|
||||
const DELETE_ACCOUNT_URL = '/api/pleroma/delete_account'
|
||||
const CHANGE_PASSWORD_URL = '/api/pleroma/change_password'
|
||||
|
@ -51,6 +49,7 @@ const MASTODON_POST_STATUS_URL = '/api/v1/statuses'
|
|||
const MASTODON_MEDIA_UPLOAD_URL = '/api/v1/media'
|
||||
const MASTODON_STATUS_FAVORITEDBY_URL = id => `/api/v1/statuses/${id}/favourited_by`
|
||||
const MASTODON_STATUS_REBLOGGEDBY_URL = id => `/api/v1/statuses/${id}/reblogged_by`
|
||||
const MASTODON_PROFILE_UPDATE_URL = '/api/v1/accounts/update_credentials'
|
||||
|
||||
import { each, map, concat, last } from 'lodash'
|
||||
import { parseStatus, parseUser, parseNotification, parseAttachment } from '../entity_normalizer/entity_normalizer.service.js'
|
||||
|
@ -80,28 +79,16 @@ const promisedRequest = (url, options) => {
|
|||
})
|
||||
}
|
||||
|
||||
// Params
|
||||
// cropH
|
||||
// cropW
|
||||
// cropX
|
||||
// cropY
|
||||
// img (base 64 encodend data url)
|
||||
const updateAvatar = ({credentials, params}) => {
|
||||
let url = AVATAR_UPDATE_URL
|
||||
|
||||
const updateAvatar = ({credentials, avatar}) => {
|
||||
const form = new FormData()
|
||||
|
||||
each(params, (value, key) => {
|
||||
if (value) {
|
||||
form.append(key, value)
|
||||
}
|
||||
})
|
||||
|
||||
return fetch(url, {
|
||||
form.append('avatar', avatar)
|
||||
return fetch(MASTODON_PROFILE_UPDATE_URL, {
|
||||
headers: authHeaders(credentials),
|
||||
method: 'POST',
|
||||
method: 'PATCH',
|
||||
body: form
|
||||
}).then((data) => data.json())
|
||||
})
|
||||
.then((data) => data.json())
|
||||
.then((data) => parseUser(data))
|
||||
}
|
||||
|
||||
const updateBg = ({credentials, params}) => {
|
||||
|
@ -122,52 +109,29 @@ const updateBg = ({credentials, params}) => {
|
|||
}).then((data) => data.json())
|
||||
}
|
||||
|
||||
// Params
|
||||
// height
|
||||
// width
|
||||
// offset_left
|
||||
// offset_top
|
||||
// banner (base 64 encodend data url)
|
||||
const updateBanner = ({credentials, params}) => {
|
||||
let url = BANNER_UPDATE_URL
|
||||
|
||||
const updateBanner = ({credentials, banner}) => {
|
||||
const form = new FormData()
|
||||
|
||||
each(params, (value, key) => {
|
||||
if (value) {
|
||||
form.append(key, value)
|
||||
}
|
||||
})
|
||||
|
||||
return fetch(url, {
|
||||
form.append('header', banner)
|
||||
return fetch(MASTODON_PROFILE_UPDATE_URL, {
|
||||
headers: authHeaders(credentials),
|
||||
method: 'POST',
|
||||
method: 'PATCH',
|
||||
body: form
|
||||
}).then((data) => data.json())
|
||||
})
|
||||
.then((data) => data.json())
|
||||
.then((data) => parseUser(data))
|
||||
}
|
||||
|
||||
// Params
|
||||
// name
|
||||
// url
|
||||
// location
|
||||
// description
|
||||
const updateProfile = ({credentials, params}) => {
|
||||
// Always include these fields, because they might be empty or false
|
||||
const fields = ['description', 'locked', 'no_rich_text', 'hide_follows', 'hide_followers', 'show_role']
|
||||
let url = PROFILE_UPDATE_URL
|
||||
|
||||
const form = new FormData()
|
||||
|
||||
each(params, (value, key) => {
|
||||
if (fields.includes(key) || value) {
|
||||
form.append(key, value)
|
||||
}
|
||||
return promisedRequest(MASTODON_PROFILE_UPDATE_URL, {
|
||||
headers: {
|
||||
'Accept': 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
...authHeaders(credentials)
|
||||
},
|
||||
method: 'PATCH',
|
||||
body: JSON.stringify(params)
|
||||
})
|
||||
return fetch(url, {
|
||||
headers: authHeaders(credentials),
|
||||
method: 'POST',
|
||||
body: form
|
||||
}).then((data) => data.json())
|
||||
.then((data) => parseUser(data))
|
||||
}
|
||||
|
||||
// Params needed:
|
||||
|
@ -636,9 +600,22 @@ const uploadMedia = ({formData, credentials}) => {
|
|||
.then((data) => parseAttachment(data))
|
||||
}
|
||||
|
||||
const followImport = ({params, credentials}) => {
|
||||
const importBlocks = ({file, credentials}) => {
|
||||
const formData = new FormData()
|
||||
formData.append('list', file)
|
||||
return fetch(BLOCKS_IMPORT_URL, {
|
||||
body: formData,
|
||||
method: 'POST',
|
||||
headers: authHeaders(credentials)
|
||||
})
|
||||
.then((response) => response.ok)
|
||||
}
|
||||
|
||||
const importFollows = ({file, credentials}) => {
|
||||
const formData = new FormData()
|
||||
formData.append('list', file)
|
||||
return fetch(FOLLOW_IMPORT_URL, {
|
||||
body: params,
|
||||
body: formData,
|
||||
method: 'POST',
|
||||
headers: authHeaders(credentials)
|
||||
})
|
||||
|
@ -786,7 +763,8 @@ const apiService = {
|
|||
updateProfile,
|
||||
updateBanner,
|
||||
externalProfile,
|
||||
followImport,
|
||||
importBlocks,
|
||||
importFollows,
|
||||
deleteAccount,
|
||||
changePassword,
|
||||
fetchFollowRequests,
|
||||
|
|
|
@ -101,13 +101,14 @@ const backendInteractorService = (credentials) => {
|
|||
|
||||
const getCaptcha = () => apiService.getCaptcha()
|
||||
const register = (params) => apiService.register(params)
|
||||
const updateAvatar = ({params}) => apiService.updateAvatar({credentials, params})
|
||||
const updateAvatar = ({avatar}) => apiService.updateAvatar({credentials, avatar})
|
||||
const updateBg = ({params}) => apiService.updateBg({credentials, params})
|
||||
const updateBanner = ({params}) => apiService.updateBanner({credentials, params})
|
||||
const updateBanner = ({banner}) => apiService.updateBanner({credentials, banner})
|
||||
const updateProfile = ({params}) => apiService.updateProfile({credentials, params})
|
||||
|
||||
const externalProfile = (profileUrl) => apiService.externalProfile({profileUrl, credentials})
|
||||
const followImport = ({params}) => apiService.followImport({params, credentials})
|
||||
const importBlocks = (file) => apiService.importBlocks({file, credentials})
|
||||
const importFollows = (file) => apiService.importFollows({file, credentials})
|
||||
|
||||
const deleteAccount = ({password}) => apiService.deleteAccount({credentials, password})
|
||||
const changePassword = ({password, newPassword, newPasswordConfirmation}) => apiService.changePassword({credentials, password, newPassword, newPasswordConfirmation})
|
||||
|
@ -150,7 +151,8 @@ const backendInteractorService = (credentials) => {
|
|||
updateBanner,
|
||||
updateProfile,
|
||||
externalProfile,
|
||||
followImport,
|
||||
importBlocks,
|
||||
importFollows,
|
||||
deleteAccount,
|
||||
changePassword,
|
||||
fetchFollowRequests,
|
||||
|
|
|
@ -195,6 +195,7 @@ export const parseStatus = (data) => {
|
|||
output.summary = pleroma.spoiler_text ? data.pleroma.spoiler_text['text/plain'] : data.spoiler_text
|
||||
output.statusnet_conversation_id = data.pleroma.conversation_id
|
||||
output.is_local = pleroma.local
|
||||
output.in_reply_to_screen_name = data.pleroma.in_reply_to_account_acct
|
||||
} else {
|
||||
output.text = data.content
|
||||
output.summary = data.spoiler_text
|
||||
|
@ -204,8 +205,6 @@ export const parseStatus = (data) => {
|
|||
output.in_reply_to_user_id = data.in_reply_to_account_id
|
||||
output.replies_count = data.replies_count
|
||||
|
||||
// Missing!! fix in UI?
|
||||
// output.in_reply_to_screen_name = ???
|
||||
if (output.type === 'retweet') {
|
||||
output.retweeted_status = parseStatus(data.reblog)
|
||||
}
|
||||
|
|
|
@ -23,18 +23,12 @@ export const requestFollow = (user, store) => new Promise((resolve, reject) => {
|
|||
|
||||
// For locked users we just mark it that we sent the follow request
|
||||
if (updated.locked) {
|
||||
resolve({
|
||||
sent: true,
|
||||
updated
|
||||
})
|
||||
resolve({ sent: true })
|
||||
}
|
||||
|
||||
if (updated.following) {
|
||||
// If we get result immediately, just stop.
|
||||
resolve({
|
||||
sent: false,
|
||||
updated
|
||||
})
|
||||
resolve({ sent: false })
|
||||
}
|
||||
|
||||
// But usually we don't get result immediately, so we ask server
|
||||
|
@ -48,16 +42,10 @@ export const requestFollow = (user, store) => new Promise((resolve, reject) => {
|
|||
.then((following) => {
|
||||
if (following) {
|
||||
// We confirmed and everything's good.
|
||||
resolve({
|
||||
sent: false,
|
||||
updated
|
||||
})
|
||||
resolve({ sent: false })
|
||||
} else {
|
||||
// If after all the tries, just treat it as if user is locked
|
||||
resolve({
|
||||
sent: false,
|
||||
updated
|
||||
})
|
||||
resolve({ sent: false })
|
||||
}
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue