diff --git a/packages/codegen-ui-react/lib/__tests__/react-studio-dependency-provider.test.ts b/packages/codegen-ui-react/lib/__tests__/react-studio-dependency-provider.test.ts index 040f186b..e2f69ae3 100644 --- a/packages/codegen-ui-react/lib/__tests__/react-studio-dependency-provider.test.ts +++ b/packages/codegen-ui-react/lib/__tests__/react-studio-dependency-provider.test.ts @@ -17,7 +17,8 @@ import semver from 'semver'; import { ReactRequiredDependencyProvider } from '..'; describe('ReactStudioDependencyProvider', () => { - const requiredDependencies = new ReactRequiredDependencyProvider().getRequiredDependencies(); + const requiredDependencies = new ReactRequiredDependencyProvider().getRequiredDependencies(false); + const requiredDependenciesWithStorageManager = new ReactRequiredDependencyProvider().getRequiredDependencies(true); describe('getRequiredDependencies', () => { it('has required dependencies', () => { @@ -39,5 +40,15 @@ describe('ReactStudioDependencyProvider', () => { expect(dep.reason.length).toBeGreaterThan(0); }); }); + + it('does not include ui-react-storage if user does not use StorageManager', () => { + expect(requiredDependencies.filter((dep) => dep.dependencyName !== '@aws-amplify/ui-react-storage')).toBeTruthy(); + }); + + it('includes ui-react-storage if user is using StorageManager', () => { + expect( + requiredDependenciesWithStorageManager.filter((dep) => dep.dependencyName === '@aws-amplify/ui-react-storage'), + ).toBeTruthy(); + }); }); }); diff --git a/packages/codegen-ui-react/lib/react-required-dependency-provider.ts b/packages/codegen-ui-react/lib/react-required-dependency-provider.ts index 3e0e8795..409c29b1 100644 --- a/packages/codegen-ui-react/lib/react-required-dependency-provider.ts +++ b/packages/codegen-ui-react/lib/react-required-dependency-provider.ts @@ -20,8 +20,8 @@ type SemVerRequiredDependency = RequiredDependency & { }; export class ReactRequiredDependencyProvider extends RequiredDependencyProvider { - getRequiredDependencies(): SemVerRequiredDependency[] { - return [ + getRequiredDependencies(hasStorageManager?: boolean): SemVerRequiredDependency[] { + const dependencies = [ { dependencyName: '@aws-amplify/ui-react', supportedSemVerPattern: '^4.6.0', @@ -32,11 +32,16 @@ export class ReactRequiredDependencyProvider extends RequiredDependencyProvider< supportedSemVerPattern: '^5.0.2', reason: 'Required to leverage DataStore.', }, - { + ]; + + if (hasStorageManager) { + dependencies.push({ dependencyName: '@aws-amplify/ui-react-storage', supportedSemVerPattern: '^1.1.0', reason: 'Required to leverage StorageManager.', - }, - ]; + }); + } + + return dependencies; } } diff --git a/packages/codegen-ui/lib/required-dependency-provider.ts b/packages/codegen-ui/lib/required-dependency-provider.ts index faed41f7..41c6d812 100644 --- a/packages/codegen-ui/lib/required-dependency-provider.ts +++ b/packages/codegen-ui/lib/required-dependency-provider.ts @@ -19,5 +19,5 @@ export type RequiredDependency = { }; export abstract class RequiredDependencyProvider { - abstract getRequiredDependencies(): DependencyType[]; + abstract getRequiredDependencies(hasStorageManager?: boolean): DependencyType[]; }