Skip to content

Commit 3a00511

Browse files
committed
#155 AppのUseCaseを修正(負荷箇所の軽減)
1 parent 15b325a commit 3a00511

File tree

9 files changed

+192
-236
lines changed

9 files changed

+192
-236
lines changed

README.md

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ src/
5656
│ │ └── DefaultLoader.ts
5757
│ ├── service/ # Domain services
5858
│ │ ├── LoadingService.ts
59-
│ │ ├── ScreenCaptureService.ts
59+
│ │ ├── ScreenOverlayService.ts
6060
│ │ └── ViewBinderService.ts
6161
│ └── variable/ # Domain state
6262
├── infrastructure/ # Infrastructure Layer
@@ -234,14 +234,19 @@ graph TD
234234
235235
GotoView --> LoadingCheck{use loading?<br/>Default: true}
236236
237-
LoadingCheck -->|YES| LoadingStart[Start Loading]
238-
LoadingCheck -->|NO| OnExit
239-
LoadingStart --> OnExit
237+
LoadingCheck -->|YES| ScreenOverlay[Screen Overlay]
238+
LoadingCheck -->|NO| RemoveResponse
239+
ScreenOverlay --> LoadingStart[Start Loading]
240+
LoadingStart --> RemoveResponse
240241
241-
OnExit[Previous View: onExit] --> RemoveViewFromStage[Remove Previous View from Stage]
242-
RemoveViewFromStage --> RemoveResponse[Remove Previous Response Data]
242+
RemoveResponse[Remove Previous Response Data] --> ParseQuery[Parse Query String]
243+
ParseQuery --> UpdateHistory{SPA mode?}
243244
244-
RemoveResponse --> RequestType[Request Type]
245+
UpdateHistory -->|YES| PushState[Push History State]
246+
UpdateHistory -->|NO| RequestType
247+
PushState --> RequestType
248+
249+
RequestType[Request Type]
245250
246251
RequestType --> JSON[JSON: Get external JSON data]
247252
RequestType --> CONTENT[CONTENT: Get Animation Tool JSON]
@@ -260,23 +265,31 @@ graph TD
260265
Cached -->|YES| RegisterResponse
261266
GlobalData --> RegisterResponse
262267
263-
RegisterResponse[Register Response Data] --> ViewModelInit[ViewModel: initialize]
268+
RegisterResponse[Register Response Data] --> RequestCallback{request callback?}
269+
270+
RequestCallback -->|YES| ExecRequestCallback[Execute Request Callback]
271+
RequestCallback -->|NO| UnbindView
272+
ExecRequestCallback --> UnbindView
273+
274+
UnbindView[Previous View: onExit & Unbind] --> BindView[New View/ViewModel: Bind]
275+
BindView --> ViewModelInit[ViewModel: initialize]
264276
265277
ViewModelInit --> ViewInit[View: initialize]
266278
ViewInit --> AddToStage[Add View to Stage]
267-
AddToStage --> OnEnter[View: onEnter]
279+
AddToStage --> GotoViewCallback{gotoView callback?}
268280
269-
OnEnter --> CallbackCheck{use callback?<br/>Default: empty}
270-
271-
CallbackCheck -->|YES| CallbackStart[Start Callback]
272-
CallbackCheck -->|NO| LoadingEndCheck
273-
CallbackStart --> LoadingEndCheck
281+
GotoViewCallback -->|YES| ExecGotoViewCallback[Execute gotoView Callback]
282+
GotoViewCallback -->|NO| LoadingEndCheck
283+
ExecGotoViewCallback --> LoadingEndCheck
274284
275285
LoadingEndCheck{use loading?<br/>Default: true}
276286
277287
LoadingEndCheck -->|YES| LoadingEnd[End Loading]
278-
LoadingEndCheck -->|NO| StartDrawing
279-
LoadingEnd --> StartDrawing
288+
LoadingEndCheck -->|NO| OnEnter
289+
LoadingEnd --> DisposeOverlay[Dispose Screen Overlay]
290+
DisposeOverlay --> OnEnter
291+
292+
OnEnter[View: onEnter] --> StartDrawing
280293
281294
StartDrawing[Start Drawing] -->|Response| User
282295

src/application/usecase/ApplicationGotoViewUseCase.test.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import { $setConfig } from "../variable/Config";
66
import { $setContext } from "../variable/Context";
77
import { response } from "../../infrastructure/variable/Response";
88

9-
vi.mock("../../domain/service/ScreenCaptureService", () => ({
10-
ScreenCaptureService: {
9+
vi.mock("../../domain/service/ScreenOverlayService", () => ({
10+
ScreenOverlayService: {
1111
add: vi.fn().mockResolvedValue(undefined),
1212
dispose: vi.fn()
1313
}
@@ -40,7 +40,9 @@ vi.mock("./ExecuteCallbackUseCase", () => ({
4040

4141
vi.mock("../../domain/service/ViewBinderService", () => ({
4242
ViewBinderService: {
43-
bind: vi.fn().mockResolvedValue(null),
43+
bind: vi.fn().mockResolvedValue({
44+
onEnter: vi.fn().mockResolvedValue(undefined)
45+
}),
4446
unbind: vi.fn().mockResolvedValue(undefined)
4547
}
4648
}));
@@ -156,7 +158,7 @@ describe("ApplicationGotoViewUseCase Test", () =>
156158
const { execute: queryStringParserService } = await import("../service/QueryStringParserService");
157159
const { execute: requestUseCase } = await import("../../infrastructure/usecase/RequestUseCase");
158160
const { LoadingService } = await import("../../domain/service/LoadingService");
159-
const { ScreenCaptureService } = await import("../../domain/service/ScreenCaptureService");
161+
const { ScreenOverlayService } = await import("../../domain/service/ScreenOverlayService");
160162

161163
$setConfig({
162164
platform: "web",
@@ -179,10 +181,10 @@ describe("ApplicationGotoViewUseCase Test", () =>
179181

180182
await execute(mockApplication, "home");
181183

182-
expect(ScreenCaptureService.add).toHaveBeenCalled();
184+
expect(ScreenOverlayService.add).toHaveBeenCalled();
183185
expect(LoadingService.start).toHaveBeenCalled();
184186
expect(LoadingService.end).toHaveBeenCalled();
185-
expect(ScreenCaptureService.dispose).toHaveBeenCalled();
187+
expect(ScreenOverlayService.dispose).toHaveBeenCalled();
186188
});
187189

188190
it("execute test case5: response with callback should execute callback", async () =>
@@ -234,7 +236,7 @@ describe("ApplicationGotoViewUseCase Test", () =>
234236
});
235237
vi.mocked(requestUseCase).mockResolvedValue([]);
236238

237-
const mockView = { name: "MockView" };
239+
const mockView = { name: "MockView", onEnter: vi.fn().mockResolvedValue(undefined) };
238240
vi.mocked(ViewBinderService.bind).mockResolvedValue(mockView as any);
239241

240242
await execute(mockApplication, "withCallback");

src/application/usecase/ApplicationGotoViewUseCase.ts

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { execute as executeCallbackUseCase } from "./ExecuteCallbackUseCase";
1111
import { execute as responseRemoveVariableUseCase } from "../../infrastructure/usecase/ResponseRemoveVariableUseCase";
1212
import { ViewBinderService } from "../../domain/service/ViewBinderService";
1313
import { LoadingService } from "../../domain/service/LoadingService";
14-
import { ScreenCaptureService } from "../../domain/service/ScreenCaptureService";
14+
import { ScreenOverlayService } from "../../domain/service/ScreenOverlayService";
1515

1616
/**
1717
* @description 指定されたパス、もしくはURLのクラスを起動
@@ -36,7 +36,7 @@ export const execute = async (
3636
* 現時点の描画をキャプチャーして表示
3737
* Capture and display the current drawing
3838
*/
39-
await ScreenCaptureService.add();
39+
await ScreenOverlayService.add();
4040

4141
/**
4242
* ローディング表示を起動
@@ -45,13 +45,6 @@ export const execute = async (
4545
await LoadingService.start();
4646
}
4747

48-
/**
49-
* 現在の画面のViewとViewModelをunbind
50-
* Unbind the View and ViewModel of the current screen
51-
*/
52-
const context = $getContext();
53-
await ViewBinderService.unbind(context);
54-
5548
/**
5649
* 前の画面で取得したレスポンスデータを初期化
5750
* Initialize the response data obtained on the previous screen
@@ -89,6 +82,7 @@ export const execute = async (
8982
* Execute request processing set by routing.json
9083
*/
9184
const responses = await requestUseCase(application.currentName);
85+
// await new Promise((resolve) => setTimeout(resolve, 3000));
9286

9387
/**
9488
* レスポンス情報をマップに登録し、コールバックを実行
@@ -110,6 +104,27 @@ export const execute = async (
110104
}
111105
}
112106

107+
/**
108+
* 現在の画面のViewとViewModelをunbind
109+
* Unbind the View and ViewModel of the current screen
110+
*/
111+
const context = $getContext();
112+
await ViewBinderService.unbind(context);
113+
114+
/**
115+
* ViewとViewModelを起動
116+
* Start View and ViewModel
117+
*/
118+
const view = await ViewBinderService.bind(context, application.currentName);
119+
120+
/**
121+
* コールバック設定があれば実行
122+
* Execute callback settings if any.
123+
*/
124+
if (view && config.gotoView) {
125+
await executeCallbackUseCase(config.gotoView.callback, view);
126+
}
127+
113128
if (hasLoading) {
114129
/**
115130
* ローディング表示を終了
@@ -121,20 +136,12 @@ export const execute = async (
121136
* 前の画面のキャプチャーを終了
122137
* End previous screen capture
123138
*/
124-
ScreenCaptureService.dispose();
139+
ScreenOverlayService.dispose();
125140
}
126141

127142
/**
128-
* ViewとViewModelを起動
129-
* Start View and ViewModel
143+
* 画面表示時の処理を実行
144+
* Execute processing when the screen is displayed
130145
*/
131-
const view = await ViewBinderService.bind(context, application.currentName);
132-
133-
/**
134-
* コールバック設定があれば実行
135-
* Execute callback settings if any.
136-
*/
137-
if (view && config.gotoView) {
138-
await executeCallbackUseCase(config.gotoView.callback, view);
139-
}
146+
await view.onEnter();
140147
};

src/domain/service/ScreenCaptureService.ts

Lines changed: 0 additions & 148 deletions
This file was deleted.

0 commit comments

Comments
 (0)