Merge pull request 'Add Mastodon API client, service for syncing avatars and display names' (#225) from feature/mastodon_api into master
All checks were successful
continuous-integration/drone/push Build is passing

Reviewed-on: #225
Reviewed-by: Greg <greg@noreply.kosmos.org>
This commit was merged in pull request #225.
This commit is contained in:
2025-05-23 08:48:15 +00:00
17 changed files with 300 additions and 49 deletions

View File

@@ -35,8 +35,7 @@ class SettingsController < ApplicationController
if @user.avatar_new.present?
if store_user_avatar
LdapManager::UpdateAvatar.call(user: @user)
XmppSetAvatarJob.perform_later(user: @user)
UserManager::UpdateAvatar.call(user: @user)
else
@validation_errors = @user.errors
render :show, status: :unprocessable_entity and return
@@ -193,7 +192,11 @@ class SettingsController < ApplicationController
def store_user_avatar
io = @user.avatar_new.tempfile
img_data = process_avatar(io)
img_data = UserManager::ProcessAvatar.call(io: io)
if img_data.blank?
@user.errors.add(:avatar, "failed to process file")
false
end
tempfile = Tempfile.create
tempfile.binmode
tempfile.write(img_data)
@@ -212,18 +215,4 @@ class SettingsController < ApplicationController
@user.save
end
end
def process_avatar(io)
processed = ImageProcessing::Vips
.source(io)
.resize_to_fill(400, 400)
.saver(strip: true)
.call
io.rewind
processed.read
rescue Vips::Error => e
Sentry.capture_exception(e) if Setting.sentry_enabled?
Rails.logger.error { "Image processing failed for avatar: #{e.message}" }
nil
end
end