import json """ Utility functions for chat customization. """ from flask import current_app def get_default_chat_customisation(tenant_customisation=None): """ Get chat customization options with default values for missing options. Args: tenant_customisation (dict or str, optional): The tenant's customization options. Defaults to None. Can be a dict or a JSON string. Returns: dict: A dictionary containing all customization options with default values for any missing options. """ # Default customization options default_customisation = { 'primary_color': '#007bff', 'secondary_color': '#6c757d', 'background_color': '#ffffff', 'text_color': '#212529', 'sidebar_color': '#f8f9fa', 'sidebar_background': '#2c3e50', 'gradient_start_color': '#f5f7fa', 'gradient_end_color': '#c3cfe2', 'markdown_background_color': 'transparent', 'markdown_text_color': '#ffffff', 'sidebar_markdown': '', } # If no tenant customization is provided, return the defaults if tenant_customisation is None: return default_customisation # Start with the default customization customisation = default_customisation.copy() # Convert JSON string to dict if needed if isinstance(tenant_customisation, str): try: tenant_customisation = json.loads(tenant_customisation) current_app.logger.debug(f"Converted JSON string to dict: {tenant_customisation}") except json.JSONDecodeError as e: current_app.logger.error(f"Error parsing JSON customisation: {e}") return default_customisation # Update with tenant customization current_app.logger.debug(f"Tenant customisation - in default creation: {tenant_customisation}") if tenant_customisation: for key, value in tenant_customisation.items(): if key in customisation: customisation[key] = value return customisation