commit: ac46de3972851e12373f690d3ef70f31cc7db1ef
parent: 8d2e63a8e4b51deb7efb1d4fbbd5e20dfb924e73
Author: HJ <30-hj@users.noreply.git.pleroma.social>
Date: Mon, 17 Jun 2019 20:17:58 +0000
Merge branch 'mastoapi-login-and-config-fixes' into 'develop'
Mastoapi login and config fixes
See merge request pleroma/pleroma-fe!833
Diffstat:
11 files changed, 35 insertions(+), 58 deletions(-)
diff --git a/BREAKING_CHANGES.md b/BREAKING_CHANGES.md
@@ -1,5 +1,8 @@
# v1.0
## Removed features/radically changed behavior
+### formattingOptionsEnabled
+as of !833 `formattingOptionsEnabled` is no longer available and instead FE check for available post formatting options and enables formatting control if there's more than one option.
+
### minimalScopesMode
As of !633, `scopeOptions` is no longer available and instead is changed for `minimalScopesMode` (default: `false`)
diff --git a/src/boot/after_store.js b/src/boot/after_store.js
@@ -100,7 +100,6 @@ const setSettings = async ({ apiConfig, staticConfig, store }) => {
copyInstanceOption('redirectRootLogin')
copyInstanceOption('showInstanceSpecificPanel')
copyInstanceOption('minimalScopesMode')
- copyInstanceOption('formattingOptionsEnabled')
copyInstanceOption('hideMutedPosts')
copyInstanceOption('collapseMessageWithSubject')
copyInstanceOption('scopeCopy')
diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
@@ -174,9 +174,6 @@ const PostStatusForm = {
return true
}
},
- formattingOptionsEnabled () {
- return this.$store.state.instance.formattingOptionsEnabled
- },
postFormats () {
return this.$store.state.instance.postFormats || []
},
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
@@ -58,7 +58,7 @@
>
</textarea>
<div class="visibility-tray">
- <div class="text-format" v-if="formattingOptionsEnabled">
+ <div class="text-format" v-if="postFormats.length > 1">
<label for="post-content-type" class="select">
<select id="post-content-type" v-model="newStatus.contentType" class="form-control">
<option v-for="postFormat in postFormats" :key="postFormat" :value="postFormat">
@@ -68,6 +68,11 @@
<i class="icon-down-open"></i>
</label>
</div>
+ <div class="text-format" v-if="postFormats.length === 1">
+ <span class="only-format">
+ {{$t(`post_status.content_type["${postFormats[0]}"]`)}}
+ </span>
+ </div>
<scope-selector
:showAll="showAllScopes"
@@ -173,6 +178,14 @@
}
}
+ .text-format {
+ .only-format {
+ color: $fallback--faint;
+ color: var(--faint, $fallback--faint);
+ }
+ }
+
+
.error {
text-align: center;
}
diff --git a/src/components/settings/settings.vue b/src/components/settings/settings.vue
@@ -102,7 +102,7 @@
</label>
</div>
</li>
- <li>
+ <li v-if="postFormats.length > 0">
<div>
{{$t('settings.post_status_content_type')}}
<label for="postContentType" class="select">
diff --git a/src/components/user_settings/user_settings.js b/src/components/user_settings/user_settings.js
@@ -46,7 +46,9 @@ const UserSettings = {
pickAvatarBtnVisible: true,
bannerUploading: false,
backgroundUploading: false,
+ banner: null,
bannerPreview: null,
+ background: null,
backgroundPreview: null,
bannerUploadError: null,
backgroundUploadError: null,
@@ -198,22 +200,12 @@ const UserSettings = {
},
submitBg () {
if (!this.backgroundPreview) { return }
- let img = this.backgroundPreview
- // eslint-disable-next-line no-undef
- let imginfo = new Image()
- let cropX, cropY, cropW, cropH
- imginfo.src = img
- cropX = 0
- cropY = 0
- cropW = imginfo.width
- cropH = imginfo.width
+ let background = this.background
this.backgroundUploading = true
- this.$store.state.api.backendInteractor.updateBg({params: {img, cropX, cropY, cropW, cropH}}).then((data) => {
+ this.$store.state.api.backendInteractor.updateBg({ background }).then((data) => {
if (!data.error) {
- let clone = JSON.parse(JSON.stringify(this.$store.state.users.currentUser))
- clone.background_image = data.url
- this.$store.commit('addNewUsers', [clone])
- this.$store.commit('setCurrentUser', clone)
+ this.$store.commit('addNewUsers', [data])
+ this.$store.commit('setCurrentUser', data)
this.backgroundPreview = null
} else {
this.backgroundUploadError = this.$t('upload.error.base') + data.error
diff --git a/src/modules/instance.js b/src/modules/instance.js
@@ -16,7 +16,6 @@ const defaultState = {
redirectRootNoLogin: '/main/all',
redirectRootLogin: '/main/friends',
showInstanceSpecificPanel: false,
- formattingOptionsEnabled: false,
alwaysShowSubjectInput: true,
hideMutedPosts: false,
collapseMessageWithSubject: false,
diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js
@@ -1,5 +1,4 @@
/* eslint-env browser */
-const BG_UPDATE_URL = '/api/qvitter/update_background_image.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'
@@ -25,7 +24,6 @@ const MFA_DISABLE_OTP_URL = '/api/pleroma/profile/mfa/totp'
const MASTODON_LOGIN_URL = '/api/v1/accounts/verify_credentials'
const MASTODON_REGISTRATION_URL = '/api/v1/accounts'
-const GET_BACKGROUND_HACK = '/api/account/verify_credentials.json'
const MASTODON_USER_FAVORITES_TIMELINE_URL = '/api/v1/favourites'
const MASTODON_USER_NOTIFICATIONS_URL = '/api/v1/notifications'
const MASTODON_FAVORITE_URL = id => `/api/v1/statuses/${id}/favourite`
@@ -133,22 +131,16 @@ const updateAvatar = ({credentials, avatar}) => {
.then((data) => parseUser(data))
}
-const updateBg = ({credentials, params}) => {
- let url = BG_UPDATE_URL
-
+const updateBg = ({ credentials, background }) => {
const form = new FormData()
-
- each(params, (value, key) => {
- if (value) {
- form.append(key, value)
- }
- })
-
- return fetch(url, {
+ form.append('pleroma_background_image', background)
+ 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 updateBanner = ({credentials, banner}) => {
@@ -544,26 +536,6 @@ const verifyCredentials = (user) => {
}
})
.then((data) => data.error ? data : parseUser(data))
- .then((mastoUser) => {
- // REMOVE WHEN BE SUPPORTS background_image
- return fetch(GET_BACKGROUND_HACK, {
- method: 'POST',
- headers: authHeaders(user)
- })
- .then((response) => {
- if (response.ok) {
- return response.json()
- } else {
- return {}
- }
- })
- /* eslint-disable camelcase */
- .then(({ background_image }) => ({
- ...mastoUser,
- background_image
- }))
- /* eslint-enable camelcase */
- })
}
const favorite = ({ id, credentials }) => {
diff --git a/src/services/backend_interactor_service/backend_interactor_service.js b/src/services/backend_interactor_service/backend_interactor_service.js
@@ -105,7 +105,7 @@ const backendInteractorService = (credentials) => {
const getCaptcha = () => apiService.getCaptcha()
const register = (params) => apiService.register({ credentials, params })
const updateAvatar = ({avatar}) => apiService.updateAvatar({credentials, avatar})
- const updateBg = ({params}) => apiService.updateBg({credentials, params})
+ const updateBg = ({ background }) => apiService.updateBg({ credentials, background })
const updateBanner = ({banner}) => apiService.updateBanner({credentials, banner})
const updateProfile = ({params}) => apiService.updateProfile({credentials, params})
diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js
@@ -60,6 +60,9 @@ export const parseUser = (data) => {
if (data.pleroma) {
const relationship = data.pleroma.relationship
+ output.background_image = data.pleroma.background_image
+ output.token = data.pleroma.chat_token
+
if (relationship) {
output.follows_you = relationship.followed_by
output.following = relationship.following
diff --git a/static/config.json b/static/config.json
@@ -8,7 +8,6 @@
"redirectRootLogin": "/main/friends",
"chatDisabled": false,
"showInstanceSpecificPanel": false,
- "formattingOptionsEnabled": false,
"collapseMessageWithSubject": false,
"scopeCopy": true,
"subjectLineBehavior": "email",