From 14b962b459312149fbdbabaab1bec63ed3189547 Mon Sep 17 00:00:00 2001 From: KernelDeimos Date: Fri, 15 Nov 2024 13:34:56 -0500 Subject: [PATCH] dev: add function-flag feature flag type --- src/backend/src/services/FeatureFlagService.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/backend/src/services/FeatureFlagService.js b/src/backend/src/services/FeatureFlagService.js index 58d288fde..357ba7a8a 100644 --- a/src/backend/src/services/FeatureFlagService.js +++ b/src/backend/src/services/FeatureFlagService.js @@ -42,10 +42,21 @@ class FeatureFlagService extends BaseService { if ( ! this.known_flags.has(permission) ) { this.known_flags.set(permission, true); } - + + if ( this.known_flags[permission].$ === 'config-flag' ) { + return this.known_flags[permission].value; + } const actor = options.actor ?? Context.get('actor'); + if ( this.known_flags[permission].$ === 'function-flag' ) { + return await this.known_flags[permission].fn({ + ...options, + actor + }); + } + + const svc_permission = this.services.get('permission'); const reading = await svc_permission.scan(actor, `feature:${permission}`); const l = PermissionUtil.reading_to_options(reading); @@ -60,6 +71,10 @@ class FeatureFlagService extends BaseService { summary[key] = value.value; continue; } + if ( value.$ === 'function-flag' ) { + summary[key] = await value.fn({ actor }); + continue; + } const svc_permission = this.services.get('permission'); const reading = await svc_permission.scan(actor, `feature:${key}`); const l = PermissionUtil.reading_to_options(reading);