Skip to content

Commit 74d61a2

Browse files
pavkamroncohen
authored andcommitted
feat(openfeature-browser-provider): add fallback features and improve huddle feature example (#331)
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
1 parent c71a6e6 commit 74d61a2

4 files changed

Lines changed: 32 additions & 16 deletions

File tree

packages/openfeature-browser-provider/example/app/featureManagement.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,17 @@ export async function initOpenFeature() {
1818
console.error("No publishable key set for Bucket");
1919
return;
2020
}
21-
bucketProvider = new BucketBrowserSDKProvider({ publishableKey });
21+
bucketProvider = new BucketBrowserSDKProvider({
22+
publishableKey,
23+
fallbackFeatures: {
24+
huddle: {
25+
key: "zoom",
26+
payload: {
27+
joinUrl: "https://zoom.us/join",
28+
},
29+
},
30+
},
31+
});
2232
return OpenFeature.setProviderAndWait(bucketProvider);
2333
}
2434

packages/openfeature-browser-provider/example/components/HuddleFeature.tsx

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,37 @@
11
"use client";
22

33
import React from "react";
4-
import { useBooleanFlagValue } from "@openfeature/react-sdk";
4+
import {
5+
useBooleanFlagValue,
6+
useObjectFlagDetails,
7+
} from "@openfeature/react-sdk";
58
import { track } from "@/app/featureManagement";
69

710
const featureKey = "huddle";
811

912
export const HuddleFeature = () => {
1013
const isEnabled = useBooleanFlagValue(featureKey, false);
14+
const { variant: provider, value: config } = useObjectFlagDetails(
15+
featureKey,
16+
{
17+
joinUrl: "https://zoom.us/join",
18+
},
19+
);
20+
1121
return (
1222
<div className="border border-gray-300 p-6 rounded-xl dark:border-neutral-800 dark:bg-zinc-800/30">
1323
<h3 className="text-xl mb-4">Huddle feature enabled:</h3>
1424
<pre>
1525
<code className="font-mono font-bold">{JSON.stringify(isEnabled)}</code>
1626
</pre>
27+
<h3 className="text-xl mb-4">
28+
Huddle using <strong>{provider}</strong>:
29+
</h3>
30+
<pre>
31+
<code className="font-mono font-bold">
32+
Join the huddle at <a href={config.joinUrl}>{config.joinUrl}</a>
33+
</code>
34+
</pre>
1735
<button
1836
className="border-solid m-auto max-w-60 border-2 border-indigo-600 rounded-lg p-2 mt-4 disabled:opacity-50"
1937
onClick={() => track(featureKey)}

packages/openfeature-browser-provider/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
}
3636
},
3737
"dependencies": {
38-
"@bucketco/browser-sdk": "3.0.0-alpha.2"
38+
"@bucketco/browser-sdk": "3.0.0-alpha.4"
3939
},
4040
"devDependencies": {
4141
"@bucketco/eslint-config": "0.0.2",

yarn.lock

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -872,18 +872,6 @@ __metadata:
872872
languageName: node
873873
linkType: hard
874874

875-
"@bucketco/browser-sdk@npm:3.0.0-alpha.2":
876-
version: 3.0.0-alpha.2
877-
resolution: "@bucketco/browser-sdk@npm:3.0.0-alpha.2"
878-
dependencies:
879-
"@floating-ui/dom": "npm:^1.6.8"
880-
canonical-json: "npm:^0.0.4"
881-
js-cookie: "npm:^3.0.5"
882-
preact: "npm:^10.22.1"
883-
checksum: 10c0/ad96d13a8f969e0c21982c919b9ba0637358813009f8057c055352eb9851fb0b07d78411d8b407107baf0b81b8e315df39257666a90f875f3a79a6e3c70ff80d
884-
languageName: node
885-
linkType: hard
886-
887875
"@bucketco/browser-sdk@npm:3.0.0-alpha.4, @bucketco/browser-sdk@workspace:packages/browser-sdk":
888876
version: 0.0.0-use.local
889877
resolution: "@bucketco/browser-sdk@workspace:packages/browser-sdk"
@@ -974,7 +962,7 @@ __metadata:
974962
version: 0.0.0-use.local
975963
resolution: "@bucketco/openfeature-browser-provider@workspace:packages/openfeature-browser-provider"
976964
dependencies:
977-
"@bucketco/browser-sdk": "npm:3.0.0-alpha.2"
965+
"@bucketco/browser-sdk": "npm:3.0.0-alpha.4"
978966
"@bucketco/eslint-config": "npm:0.0.2"
979967
"@bucketco/tsconfig": "npm:0.0.2"
980968
"@openfeature/core": "npm:1.5.0"

0 commit comments

Comments
 (0)