diff --git a/backend/internal/controllers/config.go b/backend/internal/controllers/config.go index 30b3b30..8d3610e 100644 --- a/backend/internal/controllers/config.go +++ b/backend/internal/controllers/config.go @@ -10,12 +10,18 @@ import ( "github.com/spf13/cast" ) -func GetConfig(c *echo.Context) error { - featureConfig := u.GetEnvMap("features") - features := lo.FilterMap(lo.Entries(featureConfig), func(e lo.Entry[string, any], _ int) (string, bool) { +func getEnabledKeys(config map[string]any) []string { + return lo.FilterMap(lo.Entries(config), func(e lo.Entry[string, any], _ int) (string, bool) { node, ok := e.Value.(map[string]any) return e.Key, ok && cast.ToBool(node["enabled"]) }) +} + +func GetConfig(c *echo.Context) error { + featureConfig := u.GetEnvMap("features") + features := getEnabledKeys(featureConfig) + textTranslateProviderConfig := u.GetEnvMap("features.text-translate.provider") + textTranslateProviders := getEnabledKeys(textTranslateProviderConfig) return utils.HTTPSuccessHandler(c, map[string]any{ "site_title": u.GetEnvMap("site.title"), @@ -26,5 +32,10 @@ func GetConfig(c *echo.Context) error { "version": u.GetEnvWithDefault("VERSION", "dev"), "build_time": cast.ToInt(u.GetEnvWithDefault("BUILD_TIME", cast.ToString(time.Now().Unix()))), "features": features, + "config": map[string]any{ + "text-translate": map[string]any{ + "provider": textTranslateProviders, + }, + }, }) }