From 1062dbc3e9cbf9370803c0acea55eb3c054060ca Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 5 May 2020 16:42:48 +0800 Subject: [PATCH] FIX: Discobot has not been created with our custom avatar. Previously the image was imported from a Discourse hosted CDN but the URL has since become invalid. However, it was not caught since all errors are rescued. This commit fixes the issue by shipping the user avatar with the plugin. --- app/models/user_avatar.rb | 28 ++++++++----- .../assets/images/discobot.png | Bin 0 -> 10343 bytes .../db/fixtures/001_discobot.rb | 38 ++++++++---------- 3 files changed, 35 insertions(+), 31 deletions(-) create mode 100644 plugins/discourse-narrative-bot/assets/images/discobot.png diff --git a/app/models/user_avatar.rb b/app/models/user_avatar.rb index f6dbf133126..e2b7f44dc6b 100644 --- a/app/models/user_avatar.rb +++ b/app/models/user_avatar.rb @@ -96,16 +96,31 @@ class UserAvatar < ActiveRecord::Base return unless tempfile - ext = FastImage.type(tempfile).to_s - tempfile.rewind + create_custom_avatar( + user, + tempfile, + override_gravatar: options&.dig(:override_gravatar), + origin: avatar_url + ) + rescue Net::ReadTimeout, OpenURI::HTTPError + # skip saving, we are not connected to the net + ensure + tempfile.close! if tempfile && tempfile.respond_to?(:close!) + end - upload = UploadCreator.new(tempfile, "external-avatar." + ext, origin: avatar_url, type: "avatar").create_for(user.id) + def self.create_custom_avatar(user, file, override_gravatar: false, origin: nil) + ext = FastImage.type(file).to_s + file.rewind + + upload = UploadCreator.new(file, "external-avatar.#{ext}", + origin: origin, + type: "avatar" + ).create_for(user.id) user.create_user_avatar! unless user.user_avatar if !user.user_avatar.contains_upload?(upload.id) user.user_avatar.update!(custom_upload_id: upload.id) - override_gravatar = !options || options[:override_gravatar] if user.uploaded_avatar_id.nil? || !user.user_avatar.contains_upload?(user.uploaded_avatar_id) || @@ -114,11 +129,6 @@ class UserAvatar < ActiveRecord::Base user.update!(uploaded_avatar_id: upload.id) end end - - rescue Net::ReadTimeout, OpenURI::HTTPError - # skip saving, we are not connected to the net - ensure - tempfile.close! if tempfile && tempfile.respond_to?(:close!) end def self.ensure_consistency! diff --git a/plugins/discourse-narrative-bot/assets/images/discobot.png b/plugins/discourse-narrative-bot/assets/images/discobot.png new file mode 100644 index 0000000000000000000000000000000000000000..b6c711304241edfc3e23d08a463cb4fbffcb7e7d GIT binary patch literal 10343 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