Remove flagsmith (#3025)
This commit is contained in:
parent
0c704cf1d7
commit
167274d361
7 changed files with 14 additions and 116 deletions
11
package-lock.json
generated
11
package-lock.json
generated
|
@ -41,7 +41,6 @@
|
||||||
"faker": "^5.1.0",
|
"faker": "^5.1.0",
|
||||||
"fast-array-diff": "^0.2.0",
|
"fast-array-diff": "^0.2.0",
|
||||||
"find-test-names": "^1.17.1",
|
"find-test-names": "^1.17.1",
|
||||||
"flagsmith": "^3.15.1",
|
|
||||||
"fuse.js": "^6.6.2",
|
"fuse.js": "^6.6.2",
|
||||||
"fuzzaldrin": "^2.1.0",
|
"fuzzaldrin": "^2.1.0",
|
||||||
"graphql": "^15.4.0",
|
"graphql": "^15.4.0",
|
||||||
|
@ -19244,11 +19243,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/first-match/-/first-match-0.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/first-match/-/first-match-0.0.1.tgz",
|
||||||
"integrity": "sha1-pg7GQnAPD0NyNOu37D84JHblQv0="
|
"integrity": "sha1-pg7GQnAPD0NyNOu37D84JHblQv0="
|
||||||
},
|
},
|
||||||
"node_modules/flagsmith": {
|
|
||||||
"version": "3.15.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/flagsmith/-/flagsmith-3.15.1.tgz",
|
|
||||||
"integrity": "sha512-4OHVCCYuW1doYceEJbrQWJgefwRaC9oi2VeswVzCqCe0WCoT0pOIxgi14l3Am0a0fcN9wUd93Dv2OQaF6GqKjA=="
|
|
||||||
},
|
|
||||||
"node_modules/flat": {
|
"node_modules/flat": {
|
||||||
"version": "5.0.2",
|
"version": "5.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
|
||||||
|
@ -53345,11 +53339,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/first-match/-/first-match-0.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/first-match/-/first-match-0.0.1.tgz",
|
||||||
"integrity": "sha1-pg7GQnAPD0NyNOu37D84JHblQv0="
|
"integrity": "sha1-pg7GQnAPD0NyNOu37D84JHblQv0="
|
||||||
},
|
},
|
||||||
"flagsmith": {
|
|
||||||
"version": "3.15.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/flagsmith/-/flagsmith-3.15.1.tgz",
|
|
||||||
"integrity": "sha512-4OHVCCYuW1doYceEJbrQWJgefwRaC9oi2VeswVzCqCe0WCoT0pOIxgi14l3Am0a0fcN9wUd93Dv2OQaF6GqKjA=="
|
|
||||||
},
|
|
||||||
"flat": {
|
"flat": {
|
||||||
"version": "5.0.2",
|
"version": "5.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
|
||||||
|
|
|
@ -48,7 +48,6 @@
|
||||||
"faker": "^5.1.0",
|
"faker": "^5.1.0",
|
||||||
"fast-array-diff": "^0.2.0",
|
"fast-array-diff": "^0.2.0",
|
||||||
"find-test-names": "^1.17.1",
|
"find-test-names": "^1.17.1",
|
||||||
"flagsmith": "^3.15.1",
|
|
||||||
"fuse.js": "^6.6.2",
|
"fuse.js": "^6.6.2",
|
||||||
"fuzzaldrin": "^2.1.0",
|
"fuzzaldrin": "^2.1.0",
|
||||||
"graphql": "^15.4.0",
|
"graphql": "^15.4.0",
|
||||||
|
|
|
@ -1,27 +1,8 @@
|
||||||
import flagsmith from "flagsmith";
|
|
||||||
import { FlagsmithProvider as Provider } from "flagsmith/react";
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
interface FlagsServiceProviderProps {
|
interface FlagsServiceProviderProps {
|
||||||
children: React.ReactElement;
|
children: React.ReactElement;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const FlagsServiceProvider = ({
|
export const FlagsServiceProvider = ({ children }: FlagsServiceProviderProps) =>
|
||||||
children,
|
children;
|
||||||
}: FlagsServiceProviderProps) => {
|
|
||||||
if (!FLAGS_SERVICE_ENABLED) {
|
|
||||||
return children;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Provider
|
|
||||||
flagsmith={flagsmith}
|
|
||||||
options={{
|
|
||||||
environmentID: FLAGSMITH_ID,
|
|
||||||
cacheFlags: true,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{children}
|
|
||||||
</Provider>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
|
@ -2,22 +2,6 @@ import { renderHook } from "@testing-library/react-hooks";
|
||||||
|
|
||||||
import { useAllServiceFlags } from "./useAllServiceFlags";
|
import { useAllServiceFlags } from "./useAllServiceFlags";
|
||||||
|
|
||||||
jest.mock("flagsmith/react", () => ({
|
|
||||||
__esModule: true,
|
|
||||||
useFlagsmith: () => ({
|
|
||||||
getAllFlags: () => ({
|
|
||||||
flag_one: {
|
|
||||||
enabled: true,
|
|
||||||
value: "1",
|
|
||||||
},
|
|
||||||
flag_two: {
|
|
||||||
enabled: true,
|
|
||||||
value: "2",
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
}),
|
|
||||||
}));
|
|
||||||
|
|
||||||
afterAll(() => {
|
afterAll(() => {
|
||||||
jest.clearAllMocks();
|
jest.clearAllMocks();
|
||||||
});
|
});
|
||||||
|
@ -28,17 +12,6 @@ describe("useAllServiceFlags hook", () => {
|
||||||
const { result } = renderHook(() => useAllServiceFlags());
|
const { result } = renderHook(() => useAllServiceFlags());
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
expect(result.current).toEqual([
|
expect(result.current).toEqual([]);
|
||||||
{
|
|
||||||
name: "flagOne",
|
|
||||||
enabled: true,
|
|
||||||
value: "1",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "flagTwo",
|
|
||||||
enabled: true,
|
|
||||||
value: "2",
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,15 +1,3 @@
|
||||||
import { useFlagsmith } from "flagsmith/react";
|
|
||||||
import camelCase from "lodash/camelCase";
|
|
||||||
|
|
||||||
import { FlagWithName } from "../types";
|
import { FlagWithName } from "../types";
|
||||||
|
|
||||||
export const useAllServiceFlags = (): FlagWithName[] => {
|
export const useAllServiceFlags = (): FlagWithName[] => [];
|
||||||
const flagsmith = useFlagsmith();
|
|
||||||
const flags = flagsmith.getAllFlags();
|
|
||||||
|
|
||||||
return Object.entries(flags).map(([name, { value, enabled }]) => ({
|
|
||||||
name: camelCase(name),
|
|
||||||
value: value.toString() ?? "",
|
|
||||||
enabled,
|
|
||||||
}));
|
|
||||||
};
|
|
||||||
|
|
|
@ -2,24 +2,6 @@ import { renderHook } from "@testing-library/react-hooks";
|
||||||
|
|
||||||
import { useServiceFlags } from "./useServiceFlags";
|
import { useServiceFlags } from "./useServiceFlags";
|
||||||
|
|
||||||
jest.mock("flagsmith/react", () => ({
|
|
||||||
__esModule: true,
|
|
||||||
useFlags: () => ({
|
|
||||||
flag_one: {
|
|
||||||
enabled: true,
|
|
||||||
value: "1",
|
|
||||||
},
|
|
||||||
flag_two: {
|
|
||||||
enabled: true,
|
|
||||||
value: "2",
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
}));
|
|
||||||
|
|
||||||
afterAll(() => {
|
|
||||||
jest.clearAllMocks();
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("useServiceFlags", () => {
|
describe("useServiceFlags", () => {
|
||||||
test("should return flags with values", () => {
|
test("should return flags with values", () => {
|
||||||
// Arrange && Ac
|
// Arrange && Ac
|
||||||
|
@ -30,12 +12,12 @@ describe("useServiceFlags", () => {
|
||||||
// Assert
|
// Assert
|
||||||
expect(result.current).toEqual({
|
expect(result.current).toEqual({
|
||||||
flagOne: {
|
flagOne: {
|
||||||
enabled: true,
|
enabled: false,
|
||||||
value: "1",
|
value: "",
|
||||||
},
|
},
|
||||||
flag_two: {
|
flag_two: {
|
||||||
enabled: true,
|
enabled: false,
|
||||||
value: "2",
|
value: "",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,27 +1,13 @@
|
||||||
import { useFlags } from "flagsmith/react";
|
|
||||||
import snakeCase from "lodash/snakeCase";
|
|
||||||
|
|
||||||
import { FlagsResults } from "../types";
|
import { FlagsResults } from "../types";
|
||||||
|
|
||||||
export const useServiceFlags = <T extends readonly string[]>(
|
export const useServiceFlags = <T extends readonly string[]>(
|
||||||
flags: readonly [...T],
|
flags: readonly [...T],
|
||||||
traits?: string[],
|
): FlagsResults<T> =>
|
||||||
): FlagsResults<T> => {
|
flags.reduce((acc, flag) => {
|
||||||
const flagsmithFlags = useFlags(transformFlagsToSnakeCase(flags), traits);
|
acc[flag] = {
|
||||||
|
enabled: false,
|
||||||
return flags.reduce((acc, flag) => {
|
value: "",
|
||||||
const flagName = snakeCase(flag);
|
};
|
||||||
if (flagsmithFlags[flagName]) {
|
|
||||||
acc[flag] = {
|
|
||||||
enabled: flagsmithFlags[flagName].enabled,
|
|
||||||
value: flagsmithFlags[flagName].value.toString() ?? "",
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
return acc;
|
return acc;
|
||||||
}, {} as FlagsResults<T>);
|
}, {} as FlagsResults<T>);
|
||||||
};
|
|
||||||
|
|
||||||
function transformFlagsToSnakeCase(flags: readonly string[]): string[] {
|
|
||||||
return flags.map(flag => snakeCase(flag));
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue