From 5504c67ad31e90ea4c93bffa31bfd10cb470f02e Mon Sep 17 00:00:00 2001 From: Antoine LE TAXIN Date: Wed, 13 Dec 2023 13:46:11 +0100 Subject: [PATCH 1/6] feat(useCookieConsent): add isSegmentLoading attribut --- .changeset/khaki-impalas-train.md | 5 ++ .../CookieConsentProvider.tsx | 9 ++-- .../CookieConsentProvider/__tests__/index.tsx | 52 ++++++++++++++----- 3 files changed, 49 insertions(+), 17 deletions(-) create mode 100644 .changeset/khaki-impalas-train.md diff --git a/.changeset/khaki-impalas-train.md b/.changeset/khaki-impalas-train.md new file mode 100644 index 000000000..b7cb2c279 --- /dev/null +++ b/.changeset/khaki-impalas-train.md @@ -0,0 +1,5 @@ +--- +'@scaleway/cookie-consent': minor +--- + +Add isSegmentLoading state to manage Segment integrations loading status diff --git a/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx b/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx index 36d6ea16b..30d2da072 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx @@ -32,6 +32,7 @@ type Context = { integrations: Integrations needConsent: boolean isSegmentAllowed: boolean + isSegmentLoading: boolean segmentIntegrations: { All: boolean } & Record categoriesConsent: Partial saveConsent: (categoriesConsent: Partial) => void @@ -108,7 +109,7 @@ export const CookieConsentProvider = ({ useEffect(() => { // We set needConsent at false until we have an answer from segment // This is to avoid showing setting needConsent to true only to be set - // to false after receiving segment answer and flciker the UI + // to false after receiving segment answer and flicker the UI setNeedsConsent( isConsentRequired && cookies?.[HASH_COOKIE] !== integrationsHash.toString() && @@ -220,17 +221,19 @@ export const CookieConsentProvider = ({ integrations, needConsent, isSegmentAllowed, + isSegmentLoading: !segmentIntegrations, segmentIntegrations: segmentEnabledIntegrations, categoriesConsent: cookieConsent, saveConsent, }), [ integrations, - cookieConsent, - saveConsent, needConsent, isSegmentAllowed, + segmentIntegrations, segmentEnabledIntegrations, + cookieConsent, + saveConsent, ], ) diff --git a/packages/cookie-consent/src/CookieConsentProvider/__tests__/index.tsx b/packages/cookie-consent/src/CookieConsentProvider/__tests__/index.tsx index cb639d3ac..f50cb9d7c 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/__tests__/index.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/__tests__/index.tsx @@ -24,22 +24,24 @@ const wrapper = ) +const integrations = [ + { + category: 'analytics', + name: 'Google Universal Analytics', + }, + { + category: 'marketing', + name: 'Salesforce custom destination (Scaleway)', + }, + { + category: 'marketing', + name: 'Salesforce', + }, +] +const mockUseSegmentIntegrations = jest.fn().mockReturnValue(integrations) jest.mock('../useSegmentIntegrations', () => ({ __esModule: true, - useSegmentIntegrations: () => [ - { - category: 'analytics', - name: 'Google Universal Analytics', - }, - { - category: 'marketing', - name: 'Salesforce custom destination (Scaleway)', - }, - { - category: 'marketing', - name: 'Salesforce', - }, - ], + useSegmentIntegrations: () => mockUseSegmentIntegrations(), })) describe('CookieConsent - CookieConsentProvider', () => { @@ -84,6 +86,28 @@ describe('CookieConsent - CookieConsentProvider', () => { Salesforce: true, 'Salesforce custom destination (Scaleway)': true, }) + expect(result.current.isSegmentLoading).toBe(false) + }) + + it('should know when integrations are loading', () => { + // simulate that Segment is loading + mockUseSegmentIntegrations.mockReturnValue(undefined) + const { result } = renderHook(() => useCookieConsent(), { + wrapper: wrapper({ + isConsentRequired: true, + essentialIntegrations: ['Deskpro', 'Stripe', 'Sentry'], + config: { + segment: { + cdnURL: 'url', + writeKey: 'key', + }, + }, + }), + }) + expect(result.current.isSegmentLoading).toBe(true) + + // put mock back as if segment integrations are loaded + mockUseSegmentIntegrations.mockReturnValue(integrations) }) it('should know to ask for content when no cookie is set and consent is required', () => { From 3fb9d2655ea63bca93f0a0be0da72f4d3400cecb Mon Sep 17 00:00:00 2001 From: Antoine LE TAXIN Date: Wed, 13 Dec 2023 15:25:32 +0100 Subject: [PATCH 2/6] fix: move isSegmentLoading in useSegmentIntegrations for clarity --- .../CookieConsentProvider.tsx | 7 ++++--- .../src/CookieConsentProvider/__tests__/index.tsx | 15 ++++++++++++--- .../useSegmentIntegrations.ts | 5 ++++- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx b/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx index 30d2da072..b1fc7471a 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx @@ -72,7 +72,8 @@ export const CookieConsentProvider = ({ const [needConsent, setNeedsConsent] = useState(false) const [cookies, setCookies] = useState>() - const segmentIntegrations = useSegmentIntegrations(config) + const { integrations: segmentIntegrations, isSegmentLoading } = + useSegmentIntegrations(config) useEffect(() => { setCookies(cookie.parse(document.cookie)) @@ -221,7 +222,7 @@ export const CookieConsentProvider = ({ integrations, needConsent, isSegmentAllowed, - isSegmentLoading: !segmentIntegrations, + isSegmentLoading, segmentIntegrations: segmentEnabledIntegrations, categoriesConsent: cookieConsent, saveConsent, @@ -230,7 +231,7 @@ export const CookieConsentProvider = ({ integrations, needConsent, isSegmentAllowed, - segmentIntegrations, + isSegmentLoading, segmentEnabledIntegrations, cookieConsent, saveConsent, diff --git a/packages/cookie-consent/src/CookieConsentProvider/__tests__/index.tsx b/packages/cookie-consent/src/CookieConsentProvider/__tests__/index.tsx index f50cb9d7c..d53420552 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/__tests__/index.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/__tests__/index.tsx @@ -38,7 +38,10 @@ const integrations = [ name: 'Salesforce', }, ] -const mockUseSegmentIntegrations = jest.fn().mockReturnValue(integrations) +const mockUseSegmentIntegrations = jest.fn().mockReturnValue({ + integrations, + isSegmentLoading: false, +}) jest.mock('../useSegmentIntegrations', () => ({ __esModule: true, useSegmentIntegrations: () => mockUseSegmentIntegrations(), @@ -91,7 +94,10 @@ describe('CookieConsent - CookieConsentProvider', () => { it('should know when integrations are loading', () => { // simulate that Segment is loading - mockUseSegmentIntegrations.mockReturnValue(undefined) + mockUseSegmentIntegrations.mockReturnValue({ + integrations: undefined, + isSegmentLoading: true, + }) const { result } = renderHook(() => useCookieConsent(), { wrapper: wrapper({ isConsentRequired: true, @@ -107,7 +113,10 @@ describe('CookieConsent - CookieConsentProvider', () => { expect(result.current.isSegmentLoading).toBe(true) // put mock back as if segment integrations are loaded - mockUseSegmentIntegrations.mockReturnValue(integrations) + mockUseSegmentIntegrations.mockReturnValue({ + integrations, + isSegmentLoading: false, + }) }) it('should know to ask for content when no cookie is set and consent is required', () => { diff --git a/packages/cookie-consent/src/CookieConsentProvider/useSegmentIntegrations.ts b/packages/cookie-consent/src/CookieConsentProvider/useSegmentIntegrations.ts index 64ceafc33..139a2d125 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/useSegmentIntegrations.ts +++ b/packages/cookie-consent/src/CookieConsentProvider/useSegmentIntegrations.ts @@ -80,5 +80,8 @@ export const useSegmentIntegrations = (config: Config) => { }) }, [setIntegrations, config.segment]) - return integrations + return { + integrations, + isSegmentLoading: integrations === undefined, + } } From df0b390191bf0ccd72280c9d3d90c8d923d27dd8 Mon Sep 17 00:00:00 2001 From: Antoine LE TAXIN Date: Wed, 13 Dec 2023 15:34:45 +0100 Subject: [PATCH 3/6] test: fix and add some test cases --- .../__tests__/useSegmentIntegrations/emptyConfig.tsx | 3 ++- .../__tests__/useSegmentIntegrations/fetchError.tsx | 4 +++- .../__tests__/useSegmentIntegrations/networkError.tsx | 3 ++- .../__tests__/useSegmentIntegrations/working.tsx | 5 ++++- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/emptyConfig.tsx b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/emptyConfig.tsx index af0764733..c7e909cfc 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/emptyConfig.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/emptyConfig.tsx @@ -9,7 +9,8 @@ describe('CookieConsent - useSegmentIntegrations', () => { ) await waitFor(() => { - expect(result.current).toStrictEqual([]) + expect(result.current.integrations).toStrictEqual([]) }) + expect(result.current.isSegmentLoading).toBe(false) }) }) diff --git a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/fetchError.tsx b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/fetchError.tsx index 73dc01a14..7022d0691 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/fetchError.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/fetchError.tsx @@ -16,11 +16,13 @@ describe('CookieConsent - useSegmentIntegrations', () => { ) await waitFor(() => { - expect(result.current).toStrictEqual([]) + expect(result.current.integrations).toStrictEqual([]) }) await waitFor(() => { expect(globalThis.fetch).toHaveBeenCalled() }) + + expect(result.current.isSegmentLoading).toBe(false) }) }) diff --git a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/networkError.tsx b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/networkError.tsx index 8d70c78da..1ca646a26 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/networkError.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/networkError.tsx @@ -16,11 +16,12 @@ describe('CookieConsent - useSegmentIntegrations', () => { ) await waitFor(() => { - expect(result.current).toStrictEqual([]) + expect(result.current.integrations).toStrictEqual([]) }) await waitFor(() => { expect(globalThis.fetch).toHaveBeenCalled() }) + expect(result.current.isSegmentLoading).toBe(false) }) }) diff --git a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/working.tsx b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/working.tsx index 74e54d080..ee93c9c65 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/working.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/working.tsx @@ -64,8 +64,10 @@ describe('CookieConsent - useSegmentIntegrations', () => { }), ) + expect(result.current.isSegmentLoading).toBe(true) + await waitFor(() => { - expect(result.current).toStrictEqual([ + expect(result.current.integrations).toStrictEqual([ { category: 'functional', name: 'Segment.io', @@ -100,5 +102,6 @@ describe('CookieConsent - useSegmentIntegrations', () => { await waitFor(() => { expect(globalThis.fetch).toHaveBeenCalled() }) + expect(result.current.isSegmentLoading).toBe(false) }) }) From 5c778d8248f96bcd97dff82dbfa9cc4ce1db69ee Mon Sep 17 00:00:00 2001 From: Antoine LE TAXIN Date: Wed, 13 Dec 2023 15:36:12 +0100 Subject: [PATCH 4/6] fix: rename internal isLoading state --- .../src/CookieConsentProvider/CookieConsentProvider.tsx | 6 +++--- .../src/CookieConsentProvider/__tests__/index.tsx | 6 +++--- .../__tests__/useSegmentIntegrations/emptyConfig.tsx | 2 +- .../__tests__/useSegmentIntegrations/fetchError.tsx | 2 +- .../__tests__/useSegmentIntegrations/networkError.tsx | 2 +- .../__tests__/useSegmentIntegrations/working.tsx | 4 ++-- .../src/CookieConsentProvider/useSegmentIntegrations.ts | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx b/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx index b1fc7471a..c5566c389 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx @@ -72,7 +72,7 @@ export const CookieConsentProvider = ({ const [needConsent, setNeedsConsent] = useState(false) const [cookies, setCookies] = useState>() - const { integrations: segmentIntegrations, isSegmentLoading } = + const { integrations: segmentIntegrations, isLoading } = useSegmentIntegrations(config) useEffect(() => { @@ -222,7 +222,7 @@ export const CookieConsentProvider = ({ integrations, needConsent, isSegmentAllowed, - isSegmentLoading, + isSegmentLoading: isLoading, segmentIntegrations: segmentEnabledIntegrations, categoriesConsent: cookieConsent, saveConsent, @@ -231,7 +231,7 @@ export const CookieConsentProvider = ({ integrations, needConsent, isSegmentAllowed, - isSegmentLoading, + isLoading, segmentEnabledIntegrations, cookieConsent, saveConsent, diff --git a/packages/cookie-consent/src/CookieConsentProvider/__tests__/index.tsx b/packages/cookie-consent/src/CookieConsentProvider/__tests__/index.tsx index d53420552..c3ecbdc03 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/__tests__/index.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/__tests__/index.tsx @@ -40,7 +40,7 @@ const integrations = [ ] const mockUseSegmentIntegrations = jest.fn().mockReturnValue({ integrations, - isSegmentLoading: false, + isLoading: false, }) jest.mock('../useSegmentIntegrations', () => ({ __esModule: true, @@ -96,7 +96,7 @@ describe('CookieConsent - CookieConsentProvider', () => { // simulate that Segment is loading mockUseSegmentIntegrations.mockReturnValue({ integrations: undefined, - isSegmentLoading: true, + isLoading: true, }) const { result } = renderHook(() => useCookieConsent(), { wrapper: wrapper({ @@ -115,7 +115,7 @@ describe('CookieConsent - CookieConsentProvider', () => { // put mock back as if segment integrations are loaded mockUseSegmentIntegrations.mockReturnValue({ integrations, - isSegmentLoading: false, + isLoading: false, }) }) diff --git a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/emptyConfig.tsx b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/emptyConfig.tsx index c7e909cfc..59822a5a8 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/emptyConfig.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/emptyConfig.tsx @@ -11,6 +11,6 @@ describe('CookieConsent - useSegmentIntegrations', () => { await waitFor(() => { expect(result.current.integrations).toStrictEqual([]) }) - expect(result.current.isSegmentLoading).toBe(false) + expect(result.current.isLoading).toBe(false) }) }) diff --git a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/fetchError.tsx b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/fetchError.tsx index 7022d0691..79c6847f7 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/fetchError.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/fetchError.tsx @@ -23,6 +23,6 @@ describe('CookieConsent - useSegmentIntegrations', () => { expect(globalThis.fetch).toHaveBeenCalled() }) - expect(result.current.isSegmentLoading).toBe(false) + expect(result.current.isLoading).toBe(false) }) }) diff --git a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/networkError.tsx b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/networkError.tsx index 1ca646a26..696bbd3da 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/networkError.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/networkError.tsx @@ -22,6 +22,6 @@ describe('CookieConsent - useSegmentIntegrations', () => { await waitFor(() => { expect(globalThis.fetch).toHaveBeenCalled() }) - expect(result.current.isSegmentLoading).toBe(false) + expect(result.current.isLoading).toBe(false) }) }) diff --git a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/working.tsx b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/working.tsx index ee93c9c65..f4bb00a6e 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/working.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/working.tsx @@ -64,7 +64,7 @@ describe('CookieConsent - useSegmentIntegrations', () => { }), ) - expect(result.current.isSegmentLoading).toBe(true) + expect(result.current.isLoading).toBe(true) await waitFor(() => { expect(result.current.integrations).toStrictEqual([ @@ -102,6 +102,6 @@ describe('CookieConsent - useSegmentIntegrations', () => { await waitFor(() => { expect(globalThis.fetch).toHaveBeenCalled() }) - expect(result.current.isSegmentLoading).toBe(false) + expect(result.current.isLoading).toBe(false) }) }) diff --git a/packages/cookie-consent/src/CookieConsentProvider/useSegmentIntegrations.ts b/packages/cookie-consent/src/CookieConsentProvider/useSegmentIntegrations.ts index 139a2d125..d31d54560 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/useSegmentIntegrations.ts +++ b/packages/cookie-consent/src/CookieConsentProvider/useSegmentIntegrations.ts @@ -82,6 +82,6 @@ export const useSegmentIntegrations = (config: Config) => { return { integrations, - isSegmentLoading: integrations === undefined, + isLoading: integrations === undefined, } } From 40562b1b818c6da9f6a43392050ff5fc4484d55e Mon Sep 17 00:00:00 2001 From: Antoine LE TAXIN Date: Wed, 13 Dec 2023 16:09:51 +0100 Subject: [PATCH 5/6] refactor: rename is loading state output --- .../CookieConsentProvider/CookieConsentProvider.tsx | 12 +++++++----- .../src/CookieConsentProvider/__tests__/index.tsx | 4 ++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx b/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx index c5566c389..a7f70b047 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx @@ -32,7 +32,7 @@ type Context = { integrations: Integrations needConsent: boolean isSegmentAllowed: boolean - isSegmentLoading: boolean + isSegmentIntegrationsLoading: boolean segmentIntegrations: { All: boolean } & Record categoriesConsent: Partial saveConsent: (categoriesConsent: Partial) => void @@ -72,8 +72,10 @@ export const CookieConsentProvider = ({ const [needConsent, setNeedsConsent] = useState(false) const [cookies, setCookies] = useState>() - const { integrations: segmentIntegrations, isLoading } = - useSegmentIntegrations(config) + const { + integrations: segmentIntegrations, + isLoading: isSegmentIntegrationsLoading, + } = useSegmentIntegrations(config) useEffect(() => { setCookies(cookie.parse(document.cookie)) @@ -222,7 +224,7 @@ export const CookieConsentProvider = ({ integrations, needConsent, isSegmentAllowed, - isSegmentLoading: isLoading, + isSegmentIntegrationsLoading, segmentIntegrations: segmentEnabledIntegrations, categoriesConsent: cookieConsent, saveConsent, @@ -231,7 +233,7 @@ export const CookieConsentProvider = ({ integrations, needConsent, isSegmentAllowed, - isLoading, + isSegmentIntegrationsLoading, segmentEnabledIntegrations, cookieConsent, saveConsent, diff --git a/packages/cookie-consent/src/CookieConsentProvider/__tests__/index.tsx b/packages/cookie-consent/src/CookieConsentProvider/__tests__/index.tsx index c3ecbdc03..f8413293d 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/__tests__/index.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/__tests__/index.tsx @@ -89,7 +89,7 @@ describe('CookieConsent - CookieConsentProvider', () => { Salesforce: true, 'Salesforce custom destination (Scaleway)': true, }) - expect(result.current.isSegmentLoading).toBe(false) + expect(result.current.isSegmentIntegrationsLoading).toBe(false) }) it('should know when integrations are loading', () => { @@ -110,7 +110,7 @@ describe('CookieConsent - CookieConsentProvider', () => { }, }), }) - expect(result.current.isSegmentLoading).toBe(true) + expect(result.current.isSegmentIntegrationsLoading).toBe(true) // put mock back as if segment integrations are loaded mockUseSegmentIntegrations.mockReturnValue({ From 06264cfa3fafa923e340ec9f138410c1e3d9fc33 Mon Sep 17 00:00:00 2001 From: Antoine LE TAXIN Date: Wed, 13 Dec 2023 16:17:03 +0100 Subject: [PATCH 6/6] fix: update changeset to match new prop name --- .changeset/khaki-impalas-train.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/khaki-impalas-train.md b/.changeset/khaki-impalas-train.md index b7cb2c279..9ae4e6487 100644 --- a/.changeset/khaki-impalas-train.md +++ b/.changeset/khaki-impalas-train.md @@ -2,4 +2,4 @@ '@scaleway/cookie-consent': minor --- -Add isSegmentLoading state to manage Segment integrations loading status +Add isSegmentIntegrationsLoading state to manage Segment integrations loading status