Switch to mastoapi for updating banner
This commit is contained in:
		
							parent
							
								
									808e1ac11c
								
							
						
					
					
						commit
						909d11825d
					
				
					 3 changed files with 18 additions and 43 deletions
				
			
		| 
						 | 
				
			
			@ -160,6 +160,7 @@ const UserSettings = {
 | 
			
		|||
      reader.onload = ({target}) => {
 | 
			
		||||
        const img = target.result
 | 
			
		||||
        this[slot + 'Preview'] = img
 | 
			
		||||
        this[slot] = file
 | 
			
		||||
      }
 | 
			
		||||
      reader.readAsDataURL(file)
 | 
			
		||||
    },
 | 
			
		||||
| 
						 | 
				
			
			@ -190,30 +191,17 @@ const UserSettings = {
 | 
			
		|||
    submitBanner () {
 | 
			
		||||
      if (!this.bannerPreview) { return }
 | 
			
		||||
 | 
			
		||||
      let banner = this.bannerPreview
 | 
			
		||||
      // eslint-disable-next-line no-undef
 | 
			
		||||
      let imginfo = new Image()
 | 
			
		||||
      /* eslint-disable camelcase */
 | 
			
		||||
      let offset_top, offset_left, width, height
 | 
			
		||||
      imginfo.src = banner
 | 
			
		||||
      width = imginfo.width
 | 
			
		||||
      height = imginfo.height
 | 
			
		||||
      offset_top = 0
 | 
			
		||||
      offset_left = 0
 | 
			
		||||
      this.bannerUploading = true
 | 
			
		||||
      this.$store.state.api.backendInteractor.updateBanner({params: {banner, offset_top, offset_left, width, height}}).then((data) => {
 | 
			
		||||
        if (!data.error) {
 | 
			
		||||
          let clone = JSON.parse(JSON.stringify(this.$store.state.users.currentUser))
 | 
			
		||||
          clone.cover_photo = data.url
 | 
			
		||||
          this.$store.commit('addNewUsers', [clone])
 | 
			
		||||
          this.$store.commit('setCurrentUser', clone)
 | 
			
		||||
      this.$store.state.api.backendInteractor.updateBanner({banner: this.banner})
 | 
			
		||||
        .then((user) => {
 | 
			
		||||
          this.$store.commit('addNewUsers', [user])
 | 
			
		||||
          this.$store.commit('setCurrentUser', user)
 | 
			
		||||
          this.bannerPreview = null
 | 
			
		||||
        } else {
 | 
			
		||||
          this.bannerUploadError = this.$t('upload.error.base') + data.error
 | 
			
		||||
        }
 | 
			
		||||
        this.bannerUploading = false
 | 
			
		||||
      })
 | 
			
		||||
      /* eslint-enable camelcase */
 | 
			
		||||
        })
 | 
			
		||||
        .catch((err) => {
 | 
			
		||||
          this.bannerUploadError = this.$t('upload.error.base') + ' ' + err.message
 | 
			
		||||
        })
 | 
			
		||||
        .then(() => { this.bannerUploading = false })
 | 
			
		||||
    },
 | 
			
		||||
    submitBg () {
 | 
			
		||||
      if (!this.backgroundPreview) { return }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,6 @@ const ALL_FOLLOWING_URL = '/api/qvitter/allfollowing'
 | 
			
		|||
const MENTIONS_URL = '/api/statuses/mentions.json'
 | 
			
		||||
const REGISTRATION_URL = '/api/account/register.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'
 | 
			
		||||
| 
						 | 
				
			
			@ -108,28 +107,16 @@ 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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -103,7 +103,7 @@ const backendInteractorService = (credentials) => {
 | 
			
		|||
  const register = (params) => apiService.register(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})
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue