Remove flagsmith (#3025)

This commit is contained in:
poulch 2023-01-24 11:50:14 +01:00 committed by GitHub
parent 0c704cf1d7
commit 167274d361
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 14 additions and 116 deletions

11
package-lock.json generated
View file

@ -41,7 +41,6 @@
"faker": "^5.1.0",
"fast-array-diff": "^0.2.0",
"find-test-names": "^1.17.1",
"flagsmith": "^3.15.1",
"fuse.js": "^6.6.2",
"fuzzaldrin": "^2.1.0",
"graphql": "^15.4.0",
@ -19244,11 +19243,6 @@
"resolved": "https://registry.npmjs.org/first-match/-/first-match-0.0.1.tgz",
"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": {
"version": "5.0.2",
"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",
"integrity": "sha1-pg7GQnAPD0NyNOu37D84JHblQv0="
},
"flagsmith": {
"version": "3.15.1",
"resolved": "https://registry.npmjs.org/flagsmith/-/flagsmith-3.15.1.tgz",
"integrity": "sha512-4OHVCCYuW1doYceEJbrQWJgefwRaC9oi2VeswVzCqCe0WCoT0pOIxgi14l3Am0a0fcN9wUd93Dv2OQaF6GqKjA=="
},
"flat": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",

View file

@ -48,7 +48,6 @@
"faker": "^5.1.0",
"fast-array-diff": "^0.2.0",
"find-test-names": "^1.17.1",
"flagsmith": "^3.15.1",
"fuse.js": "^6.6.2",
"fuzzaldrin": "^2.1.0",
"graphql": "^15.4.0",

View file

@ -1,27 +1,8 @@
import flagsmith from "flagsmith";
import { FlagsmithProvider as Provider } from "flagsmith/react";
import React from "react";
interface FlagsServiceProviderProps {
children: React.ReactElement;
}
export const FlagsServiceProvider = ({
children,
}: FlagsServiceProviderProps) => {
if (!FLAGS_SERVICE_ENABLED) {
return children;
}
return (
<Provider
flagsmith={flagsmith}
options={{
environmentID: FLAGSMITH_ID,
cacheFlags: true,
}}
>
{children}
</Provider>
);
};
export const FlagsServiceProvider = ({ children }: FlagsServiceProviderProps) =>
children;

View file

@ -2,22 +2,6 @@ import { renderHook } from "@testing-library/react-hooks";
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(() => {
jest.clearAllMocks();
});
@ -28,17 +12,6 @@ describe("useAllServiceFlags hook", () => {
const { result } = renderHook(() => useAllServiceFlags());
// Assert
expect(result.current).toEqual([
{
name: "flagOne",
enabled: true,
value: "1",
},
{
name: "flagTwo",
enabled: true,
value: "2",
},
]);
expect(result.current).toEqual([]);
});
});

View file

@ -1,15 +1,3 @@
import { useFlagsmith } from "flagsmith/react";
import camelCase from "lodash/camelCase";
import { FlagWithName } from "../types";
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,
}));
};
export const useAllServiceFlags = (): FlagWithName[] => [];

View file

@ -2,24 +2,6 @@ import { renderHook } from "@testing-library/react-hooks";
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", () => {
test("should return flags with values", () => {
// Arrange && Ac
@ -30,12 +12,12 @@ describe("useServiceFlags", () => {
// Assert
expect(result.current).toEqual({
flagOne: {
enabled: true,
value: "1",
enabled: false,
value: "",
},
flag_two: {
enabled: true,
value: "2",
enabled: false,
value: "",
},
});
});

View file

@ -1,27 +1,13 @@
import { useFlags } from "flagsmith/react";
import snakeCase from "lodash/snakeCase";
import { FlagsResults } from "../types";
export const useServiceFlags = <T extends readonly string[]>(
flags: readonly [...T],
traits?: string[],
): FlagsResults<T> => {
const flagsmithFlags = useFlags(transformFlagsToSnakeCase(flags), traits);
return flags.reduce((acc, flag) => {
const flagName = snakeCase(flag);
if (flagsmithFlags[flagName]) {
): FlagsResults<T> =>
flags.reduce((acc, flag) => {
acc[flag] = {
enabled: flagsmithFlags[flagName].enabled,
value: flagsmithFlags[flagName].value.toString() ?? "",
enabled: false,
value: "",
};
}
return acc;
}, {} as FlagsResults<T>);
};
function transformFlagsToSnakeCase(flags: readonly string[]): string[] {
return flags.map(flag => snakeCase(flag));
}