mirror of
https://github.com/we-promise/sure.git
synced 2026-04-19 12:04:08 +00:00
Family merchant logo (#660)
* FIX merchant regression * Add logo support for family merchants * Update family_merchant.rb
This commit is contained in:
@@ -4,6 +4,7 @@ class FamilyMerchant < Merchant
|
||||
belongs_to :family
|
||||
|
||||
before_validation :set_default_color
|
||||
before_save :generate_logo_url_from_website, if: :should_generate_logo?
|
||||
|
||||
validates :color, presence: true
|
||||
validates :name, uniqueness: { scope: :family }
|
||||
@@ -12,4 +13,25 @@ class FamilyMerchant < Merchant
|
||||
def set_default_color
|
||||
self.color = COLORS.sample
|
||||
end
|
||||
|
||||
def should_generate_logo?
|
||||
website_url_changed? || (website_url.present? && logo_url.blank?)
|
||||
end
|
||||
|
||||
def generate_logo_url_from_website
|
||||
if website_url.present? && Setting.brand_fetch_client_id.present?
|
||||
domain = extract_domain(website_url)
|
||||
self.logo_url = "https://cdn.brandfetch.io/#{domain}/icon/fallback/lettermark/w/40/h/40?c=#{Setting.brand_fetch_client_id}"
|
||||
elsif website_url.blank?
|
||||
self.logo_url = nil
|
||||
end
|
||||
end
|
||||
|
||||
def extract_domain(url)
|
||||
original_url = url
|
||||
normalized_url = url.start_with?("http://", "https://") ? url : "https://#{url}"
|
||||
URI.parse(normalized_url).host&.sub(/\Awww\./, "")
|
||||
rescue URI::InvalidURIError
|
||||
original_url.sub(/\Awww\./, "")
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user