package config

import "strings"

type SafeBrandingConfig struct {
	SiteIconURL        string `json:"siteIconUrl"`
	DeveloperAvatarURL string `json:"developerAvatarUrl"`
	DeveloperName      string `json:"developerName"`
	FeedbackEmail      string `json:"feedbackEmail"`
}

func SafeBranding(cfg BrandingConfig) SafeBrandingConfig {
	return SafeBrandingConfig{
		SiteIconURL:        strings.TrimSpace(cfg.SiteIconURL),
		DeveloperAvatarURL: strings.TrimSpace(cfg.DeveloperAvatarURL),
		DeveloperName:      strings.TrimSpace(firstNonEmpty(cfg.DeveloperName, "YMhut")),
		FeedbackEmail:      strings.TrimSpace(firstNonEmpty(cfg.FeedbackEmail, "support@ymhut.cn")),
	}
}

func NormalizeBranding(current BrandingConfig, incoming BrandingConfig) BrandingConfig {
	next := current
	if value := strings.TrimSpace(incoming.SiteIconURL); value != "" {
		next.SiteIconURL = value
	}
	if value := strings.TrimSpace(incoming.DeveloperAvatarURL); value != "" {
		next.DeveloperAvatarURL = value
	}
	if value := strings.TrimSpace(incoming.DeveloperName); value != "" {
		next.DeveloperName = value
	}
	if value := strings.TrimSpace(incoming.FeedbackEmail); value != "" {
		next.FeedbackEmail = value
	}
	if next.SiteIconURL == "" {
		next.SiteIconURL = "https://img.ymhut.cn/file/1782108850041_icon.webp"
	}
	if next.DeveloperAvatarURL == "" {
		next.DeveloperAvatarURL = "https://img.ymhut.cn/file/1782108780690_b_3db45f3787f19192c8de8e06bc0987ef.webp"
	}
	if next.DeveloperName == "" {
		next.DeveloperName = "YMhut"
	}
	if next.FeedbackEmail == "" {
		next.FeedbackEmail = "support@ymhut.cn"
	}
	return next
}
