fix(admin-web): route parse/register through use-cases to satisfy no-restricted-imports
- ParsePackageUseCase.execute now accepts onProgress callback - RegisterVersionUseCase added for the new /register endpoint - use-upload.ts now imports only from application layer (no direct infra import) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
7c8b79161a
commit
5bce676903
|
|
@ -1,4 +1,4 @@
|
||||||
import type { IVersionRepository, UploadVersionInput, UpdateVersionInput } from '@/domain/repositories/version.repository.interface';
|
import type { IVersionRepository, UploadVersionInput, RegisterVersionInput, UpdateVersionInput } from '@/domain/repositories/version.repository.interface';
|
||||||
import type { AppType, AppPlatform } from '@/domain/entities';
|
import type { AppType, AppPlatform } from '@/domain/entities';
|
||||||
import { versionRepository } from '@/infrastructure/repositories/version.repository';
|
import { versionRepository } from '@/infrastructure/repositories/version.repository';
|
||||||
|
|
||||||
|
|
@ -13,8 +13,16 @@ export class ListVersionsUseCase {
|
||||||
|
|
||||||
export class ParsePackageUseCase {
|
export class ParsePackageUseCase {
|
||||||
constructor(private readonly repo: IVersionRepository = versionRepository) {}
|
constructor(private readonly repo: IVersionRepository = versionRepository) {}
|
||||||
execute(file: File) {
|
// onProgress: 0-100 upload progress callback (for progress bar)
|
||||||
return this.repo.parse(file);
|
execute(file: File, onProgress?: (pct: number) => void) {
|
||||||
|
return this.repo.parse(file, onProgress);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class RegisterVersionUseCase {
|
||||||
|
constructor(private readonly repo: IVersionRepository = versionRepository) {}
|
||||||
|
execute(input: RegisterVersionInput) {
|
||||||
|
return this.repo.register(input);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -49,6 +57,7 @@ export class DeleteVersionUseCase {
|
||||||
// ── Singleton instances (frontend DI) ───────────────────────
|
// ── Singleton instances (frontend DI) ───────────────────────
|
||||||
export const listVersionsUseCase = new ListVersionsUseCase();
|
export const listVersionsUseCase = new ListVersionsUseCase();
|
||||||
export const parsePackageUseCase = new ParsePackageUseCase();
|
export const parsePackageUseCase = new ParsePackageUseCase();
|
||||||
|
export const registerVersionUseCase = new RegisterVersionUseCase();
|
||||||
export const uploadVersionUseCase = new UploadVersionUseCase();
|
export const uploadVersionUseCase = new UploadVersionUseCase();
|
||||||
export const updateVersionUseCase = new UpdateVersionUseCase();
|
export const updateVersionUseCase = new UpdateVersionUseCase();
|
||||||
export const toggleVersionUseCase = new ToggleVersionUseCase();
|
export const toggleVersionUseCase = new ToggleVersionUseCase();
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
import type { ChangeEvent } from 'react';
|
import type { ChangeEvent } from 'react';
|
||||||
import type { AppType } from '@/domain/entities';
|
import type { AppType } from '@/domain/entities';
|
||||||
import { useUploadStore } from '@/store/zustand/upload.store';
|
import { useUploadStore } from '@/store/zustand/upload.store';
|
||||||
import { versionRepository } from '@/infrastructure/repositories/version.repository';
|
import { parsePackageUseCase, registerVersionUseCase } from '@/application/use-cases/version.use-cases';
|
||||||
|
|
||||||
export function useUpload(appType: AppType, onSuccess: () => void) {
|
export function useUpload(appType: AppType, onSuccess: () => void) {
|
||||||
const store = useUploadStore();
|
const store = useUploadStore();
|
||||||
|
|
@ -31,7 +31,7 @@ export function useUpload(appType: AppType, onSuccess: () => void) {
|
||||||
store.setIsParsing(true);
|
store.setIsParsing(true);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const parsed = await versionRepository.parse(f, (pct) => {
|
const parsed = await parsePackageUseCase.execute(f, (pct) => {
|
||||||
store.setParseProgress(pct);
|
store.setParseProgress(pct);
|
||||||
console.log(`[useUpload] parse upload progress: ${pct}%`);
|
console.log(`[useUpload] parse upload progress: ${pct}%`);
|
||||||
});
|
});
|
||||||
|
|
@ -75,7 +75,7 @@ export function useUpload(appType: AppType, onSuccess: () => void) {
|
||||||
console.log(`[useUpload] registering version: storageKey=${storageKey} ver=${versionName} build=${buildNumber}`);
|
console.log(`[useUpload] registering version: storageKey=${storageKey} ver=${versionName} build=${buildNumber}`);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const result = await versionRepository.register({
|
const result = await registerVersionUseCase.execute({
|
||||||
storageKey, fileSize, fileSha256,
|
storageKey, fileSize, fileSha256,
|
||||||
appType, platform, versionCode,
|
appType, platform, versionCode,
|
||||||
versionName, buildNumber, changelog, minOsVersion, isForceUpdate,
|
versionName, buildNumber, changelog, minOsVersion, isForceUpdate,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue