Skip to content

Commit 090c46a

Browse files
committed
feat: create scoped dependency injection component
1 parent 43bad59 commit 090c46a

File tree

7 files changed

+27
-8
lines changed

7 files changed

+27
-8
lines changed

.vscode/settings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"source.addMissingImports.ts": "explicit",
1515
"source.organizeImports": "never",
1616
"source.organizeLinkDefinitions": "explicit",
17-
"source.removeUnused.ts": "explicit",
17+
"source.removeUnused.ts": "never",
1818
"source.removeUnusedImports": "explicit",
1919
"source.sortImports": "never"
2020
},

hosts/web/src/Main.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
/* eslint-disable import-x/no-namespace */
2-
import { DependencyInjection } from "@clean-architecture/shared-kernel";
32
import * as Catalog from "@clean-architecture/catalog";
43

54
export const Main = () => {
65
return (
7-
<DependencyInjection entityGateway={new Catalog.QuoteEntityGateway()}>
6+
<Catalog.DependencyInjection>
87
<Catalog.GetQuoteView />
9-
</DependencyInjection>
8+
</Catalog.DependencyInjection>
109
);
1110
};

modules/catalog/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
"vitest": "2.1.8"
4343
},
4444
"peerDependencies": {
45+
"@clean-architecture/shared-kernel": "^0.0.0",
4546
"react": "^18.0.0 || ^19.0.0"
4647
}
4748
}

modules/catalog/src/GetQuote/frameworks/GetQuoteView.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import { useEffect, useMemo, useState } from "react";
2-
import { useDependencyInjection } from "@clean-architecture/shared-kernel";
32
import type { Hook } from "@clean-architecture/shared-kernel";
43

54
import { GetQuoteUseCase } from "../useCases/GetQuoteUseCase";
65
import type { GetQuoteViewModel } from "../adapters/GetQuoteViewModel";
76
import { GetQuotePresenter } from "../adapters/GetQuotePresenter";
87
import { GetQuoteController } from "../adapters/GetQuoteController";
9-
import type { QuoteEntityGateway } from "../../Quote";
8+
import { useDependencyInjection } from "../../shared/frameworks/DependencyInjection";
109

1110
export const GetQuoteView = () => {
1211
const { controller, viewModel } = useGetQuote();
@@ -31,7 +30,7 @@ export const GetQuoteView = () => {
3130
};
3231

3332
const useGetQuote: Hook<GetQuoteController, GetQuoteViewModel> = () => {
34-
const { entityGateway } = useDependencyInjection<QuoteEntityGateway>();
33+
const { entityGateway } = useDependencyInjection();
3534
const [viewModel, setViewModel] = useState<GetQuoteViewModel>({});
3635
const presenter = useMemo(() => new GetQuotePresenter(setViewModel), []);
3736

modules/catalog/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
export { GetQuoteView } from "./GetQuote";
2-
export { QuoteEntityGateway } from "./Quote";
2+
export { DependencyInjection } from "./shared/frameworks/DependencyInjection";

modules/catalog/src/shared/frameworks/.gitkeep.dependencyInjection

Whitespace-only changes.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import type { PropsWithChildren } from "react";
2+
import {
3+
DependencyInjection as SharedDependencyInjection,
4+
useDependencyInjection as useSharedDependencyInjection,
5+
} from "@clean-architecture/shared-kernel";
6+
7+
import { QuoteEntityGateway } from "../../Quote";
8+
9+
type DependencyInjectionProps = PropsWithChildren;
10+
11+
export const DependencyInjection = ({ children }: DependencyInjectionProps) => {
12+
return (
13+
<SharedDependencyInjection entityGateway={new QuoteEntityGateway()}>
14+
{children}
15+
</SharedDependencyInjection>
16+
);
17+
};
18+
19+
export const useDependencyInjection =
20+
useSharedDependencyInjection<QuoteEntityGateway>;

0 commit comments

Comments
 (0)