app/helpers/account/users_helper.rb in bullet_train-1.2.27 vs app/helpers/account/users_helper.rb in bullet_train-1.3.0
- old
+ new
@@ -1,25 +1,22 @@
module Account::UsersHelper
- def profile_photo_for(url: nil, email: nil, first_name: nil, last_name: nil)
+ def profile_photo_for(url: nil, email: nil, first_name: nil, last_name: nil, profile_header: false)
+ size_details = profile_header ? {width: 700, height: 200} : {width: 100, height: 100}
+ size_details[:crop] = :fill
+
if cloudinary_enabled? && !url.blank?
- cl_image_path(url, width: 100, height: 100, crop: :fill)
+ cl_image_path(url, size_details[:width], size_details[:height], size_details[:crop])
+ elsif !url.blank?
+ url + "?" + size_details.to_param
else
- background_color = Colorizer.colorize_similarly(email.to_s, 0.5, 0.6).delete("#")
- "https://ui-avatars.com/api/?" + {
- color: "ffffff",
- background: background_color,
- bold: true,
- # email.to_s should not be necessary once we fix the edge case of cancelling an unclaimed membership
- name: [first_name, last_name].join(" ").strip.presence || email,
- size: 200,
- }.to_param
+ ui_avatar_params(email, first_name, last_name)
end
end
def user_profile_photo_url(user)
profile_photo_for(
- url: user.profile_photo_id,
+ url: get_photo_url_from(user),
email: user.email,
first_name: user.first_name,
last_name: user.last_name
)
end
@@ -27,37 +24,33 @@
def membership_profile_photo_url(membership)
if membership.user
user_profile_photo_url(membership.user)
else
profile_photo_for(
- url: membership.user_profile_photo_id,
+ url: get_photo_url_from(membership),
email: membership.invitation&.email || membership.user_email,
first_name: membership.user_first_name,
last_name: membership.user_last_name
)
end
end
+ # TODO: We can do away with these three `profile_header` methods, I'm just
+ # leaving them in case we have other developers depending on these methods.
def profile_header_photo_for(url: nil, email: nil, first_name: nil, last_name: nil)
if cloudinary_enabled? && !url.blank?
cl_image_path(url, width: 700, height: 200, crop: :fill)
+ elsif !url.blank?
+ url + "?" + {size: 200}.to_param
else
- background_color = Colorizer.colorize_similarly(email.to_s, 0.5, 0.6).delete("#")
- "https://ui-avatars.com/api/?" + {
- color: "ffffff",
- background: background_color,
- bold: true,
- # email.to_s should not be necessary once we fix the edge case of cancelling an unclaimed membership
- name: "#{first_name&.first || email.to_s[0]} #{last_name&.first || email.to_s[1]}",
- size: 200,
- }.to_param
+ ui_avatar_params(email, first_name, last_name)
end
end
def user_profile_header_photo_url(user)
profile_header_photo_for(
- url: user.profile_photo_id,
+ url: get_photo_url_from(user),
email: user.email,
first_name: user.first_name,
last_name: user.last_name
)
end
@@ -65,15 +58,41 @@
def membership_profile_header_photo_url(membership)
if membership.user
user_profile_header_photo_url(membership.user)
else
profile_header_photo_for(
- url: membership.user_profile_photo_id,
+ url: get_photo_url_from(membership),
email: membership.invitation&.email || membership.user_email,
first_name: membership.user_first_name,
last_name: membership.user&.last_name || membership.user_last_name
)
end
+ end
+
+ def get_photo_url_from(resource)
+ photo_method = if resource.is_a?(User)
+ :profile_photo
+ elsif resource.is_a?(Membership)
+ :user_profile_photo
+ end
+
+ if cloudinary_enabled?
+ resource.send("#{photo_method}_id".to_sym)
+ elsif resource.send(photo_method).attached?
+ url_for(resource.send(photo_method))
+ end
+ end
+
+ def ui_avatar_params(email, first_name, last_name)
+ background_color = Colorizer.colorize_similarly(email.to_s, 0.5, 0.6).delete("#")
+ "https://ui-avatars.com/api/?" + {
+ color: "ffffff",
+ background: background_color,
+ bold: true,
+ # email.to_s should not be necessary once we fix the edge case of cancelling an unclaimed membership
+ name: "#{first_name&.first || email.to_s[0]} #{last_name&.first || email.to_s[1]}",
+ size: 200,
+ }.to_param
end
def current_membership
current_user.memberships.where(team: current_team).first
end