Packages
ckeditor5_phoenix
1.22.0
1.28.2
1.28.1
1.28.0
1.27.2
1.27.1
1.27.0
1.26.0
1.25.1
1.25.0
1.24.2
1.24.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.0
1.19.0
1.18.0
1.17.2
1.17.1
1.17.0
1.16.1
1.16.0
1.15.8
1.15.7
1.15.6
1.15.5
1.15.4
1.15.3
1.15.2
1.15.1
1.15.0
1.14.2
1.14.1
1.14.0
1.13.0
1.12.0
1.11.0
1.10.2
1.10.1
1.10.0
1.9.0
1.8.0
1.7.0
1.6.0
1.5.0
1.4.1
1.4.0
1.3.0
1.2.1
1.2.0
1.1.0
1.0.8
1.0.7
CKEditor 5 integration for Phoenix Framework
Current section
Files
Jump to
Current section
Files
lib/preset/cloud_compatibility_checker.ex
defmodule CKEditor5.Preset.CloudCompatibilityChecker do
@moduledoc """
Enforces business rules and compatibility constraints for CKEditor5 presets.
Specifically handles Cloud Distribution Channel licensing requirements and configuration validation.
"""
import CKEditor5.License.Assertions, only: [compatible_cloud_distribution?: 1]
import CKEditor5.Preset, only: [configured_cloud?: 1]
alias CKEditor5.{Cloud, Errors, Preset}
@doc """
Checks if the preset's Cloud configuration is valid based on the license type.
"""
def assign_default_cloud_config(%Preset{cloud: _cloud, license: license} = preset) do
cond do
compatible_cloud_distribution?(license) and !configured_cloud?(preset) ->
{:ok, %{preset | cloud: %Cloud{}}}
!compatible_cloud_distribution?(license) and configured_cloud?(preset) ->
{:error, %Errors.CloudCannotBeUsedWithLicenseKey{preset: preset, license: license}}
true ->
{:ok, preset}
end
end
@doc """
Safe version of `ensure_cloud_configured!/1` which returns `:ok` when the
preset is valid for cloud distribution or `{:error, error_struct}` when not.
"""
def ensure_cloud_configured(%Preset{} = preset) do
cond do
!compatible_cloud_distribution?(preset.license) ->
{:error, %Errors.CloudCannotBeUsedWithLicenseKey{preset: preset, license: preset.license}}
!configured_cloud?(preset) ->
{:error, %Errors.CloudNotConfigured{preset: preset}}
true ->
:ok
end
end
@doc """
Bang version kept for backwards compatibility. It delegates to
`ensure_cloud_configured/1` and raises the returned error struct when
validation fails.
"""
def ensure_cloud_configured!(%Preset{} = preset) do
case ensure_cloud_configured(preset) do
:ok -> :ok
{:error, err} -> raise err
end
end
end