From b73dfae0fca1647d3d290b46c45e174e8f5ea9ef Mon Sep 17 00:00:00 2001 From: Alexandru Ciobanu Date: Thu, 20 Feb 2025 16:29:59 +0700 Subject: [PATCH 1/2] feat(openfeature-browser-provider): add fallback features and improve huddle feature example Update example to demonstrate fallback features with the Bucket OpenFeature provider, including: - Add fallback configuration for the huddle feature - Enhance HuddleFeature component to display provider and join URL - Update browser SDK dependency to 3.0.0-alpha.4 --- .../example/app/featureManagement.ts | 12 ++++++++++- .../example/components/HuddleFeature.tsx | 20 ++++++++++++++++++- .../openfeature-browser-provider/package.json | 2 +- yarn.lock | 14 +------------ 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/packages/openfeature-browser-provider/example/app/featureManagement.ts b/packages/openfeature-browser-provider/example/app/featureManagement.ts index 2cb569a2..41f67acd 100644 --- a/packages/openfeature-browser-provider/example/app/featureManagement.ts +++ b/packages/openfeature-browser-provider/example/app/featureManagement.ts @@ -18,7 +18,17 @@ export async function initOpenFeature() { console.error("No publishable key set for Bucket"); return; } - bucketProvider = new BucketBrowserSDKProvider({ publishableKey }); + bucketProvider = new BucketBrowserSDKProvider({ + publishableKey, + fallbackFeatures: { + huddle: { + key: "zoom", + payload: { + joinUrl: "https://zoom.us/join", + }, + }, + }, + }); return OpenFeature.setProviderAndWait(bucketProvider); } diff --git a/packages/openfeature-browser-provider/example/components/HuddleFeature.tsx b/packages/openfeature-browser-provider/example/components/HuddleFeature.tsx index bfcedae2..55d03c91 100644 --- a/packages/openfeature-browser-provider/example/components/HuddleFeature.tsx +++ b/packages/openfeature-browser-provider/example/components/HuddleFeature.tsx @@ -1,19 +1,37 @@ "use client"; import React from "react"; -import { useBooleanFlagValue } from "@openfeature/react-sdk"; +import { + useBooleanFlagValue, + useObjectFlagDetails, +} from "@openfeature/react-sdk"; import { track } from "@/app/featureManagement"; const featureKey = "huddle"; export const HuddleFeature = () => { const isEnabled = useBooleanFlagValue(featureKey, false); + const { variant: provider, value: config } = useObjectFlagDetails( + featureKey, + { + joinUrl: "https://zoom.us/join", + }, + ); + return (

Huddle feature enabled:

         {JSON.stringify(isEnabled)}
       
+

+ Huddle using {provider}: +

+
+        
+          Join the huddle at {config.joinUrl}
+        
+