From 60d6f7f104664ed04d671c47d99ff609d7ff8be5 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Wed, 27 May 2026 13:13:33 +0530 Subject: [PATCH] feat: invalidate cache on avatar update --- app/controllers/api/v1/profiles_controller.rb | 6 ++++++ app/jobs/avatar/avatar_from_url_job.rb | 3 +++ app/models/user.rb | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/app/controllers/api/v1/profiles_controller.rb b/app/controllers/api/v1/profiles_controller.rb index 141253d0d..fdae6a7fa 100644 --- a/app/controllers/api/v1/profiles_controller.rb +++ b/app/controllers/api/v1/profiles_controller.rb @@ -13,11 +13,17 @@ class Api::V1::ProfilesController < Api::BaseController @user.assign_attributes(profile_params) @user.custom_attributes.merge!(custom_attributes_params) @user.save! + + # Profile updates can change cached agent fields, including avatar-backed thumbnails. + @user.invalidate_avatar_cache end def avatar @user.avatar.attachment.destroy! if @user.avatar.attached? @user.reload + + # Agent thumbnails are cached separately, and avatar attachment deletes do not dirty user columns. + @user.invalidate_avatar_cache end def auto_offline diff --git a/app/jobs/avatar/avatar_from_url_job.rb b/app/jobs/avatar/avatar_from_url_job.rb index 49bf25803..c079ee79c 100644 --- a/app/jobs/avatar/avatar_from_url_job.rb +++ b/app/jobs/avatar/avatar_from_url_job.rb @@ -52,6 +52,9 @@ class Avatar::AvatarFromUrlJob < ApplicationJob filename: avatar_file.original_filename, content_type: avatar_file.content_type ) + + # Agent thumbnails are cached separately, and avatar attachments do not dirty user columns. + avatarable.invalidate_avatar_cache if avatarable.respond_to?(:invalidate_avatar_cache) end def log_http_error(avatar_url, error) diff --git a/app/models/user.rb b/app/models/user.rb index 436f88b5e..742806e95 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -216,6 +216,10 @@ class User < ApplicationRecord super end + def invalidate_avatar_cache + bump_account_user_cache_keys + end + private def remove_macros