logo

pleroma-fe

My custom branche(s) on git.pleroma.social/pleroma/pleroma-fe
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:

MBREAKING_CHANGES.md3+++
Msrc/boot/after_store.js1-
Msrc/components/post_status_form/post_status_form.js3---
Msrc/components/post_status_form/post_status_form.vue15++++++++++++++-
Msrc/components/settings/settings.vue2+-
Msrc/components/user_settings/user_settings.js20++++++--------------
Msrc/modules/instance.js1-
Msrc/services/api/api.service.js42+++++++-----------------------------------
Msrc/services/backend_interactor_service/backend_interactor_service.js2+-
Msrc/services/entity_normalizer/entity_normalizer.service.js3+++
Mstatic/config.json1-
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",