tmp
Some checks failed
Frontend CI / build (push) Failing after 59s

This commit is contained in:
SquidSpirit 2025-10-14 09:32:49 +08:00
parent de2099011b
commit f2e346fa49
6 changed files with 123 additions and 4 deletions

View File

@ -0,0 +1,73 @@
import type { AuthApiService } from '$lib/auth/adapter/gateway/authApiService';
import { AuthRepositoryImpl } from '$lib/auth/adapter/gateway/authRepositoryImpl';
import type { AuthBloc } from '$lib/auth/adapter/presenter/authBloc';
import type { AuthRepository } from '$lib/auth/application/gateway/authRepository';
import { GetCurrentUserUseCase } from '$lib/auth/application/useCase/getCurrentUserUseCase';
import { AuthApiServiceImpl } from '$lib/auth/framework/api/authApiServiceImpl';
import type { ImageApiService } from '$lib/image/adapter/gateway/imageApiService';
import { ImageRepositoryImpl } from '$lib/image/adapter/gateway/imageRepositoryImpl';
import type { ImageBloc } from '$lib/image/adapter/presenter/imageBloc';
import type { ImageRepository } from '$lib/image/application/gateway/imageRepository';
import type { UploadImageUseCase } from '$lib/image/application/useCase/uploadImageUseCase';
import { ImageApiServiceImpl } from '$lib/image/framework/api/imageApiServiceImpl';
import type { PostApiService } from '$lib/post/adapter/gateway/postApiService';
import { PostRepositoryImpl } from '$lib/post/adapter/gateway/postRepositoryImpl';
import type { PostBloc } from '$lib/post/adapter/presenter/postBloc';
import type { PostListBloc } from '$lib/post/adapter/presenter/postListBloc';
import type { PostRepository } from '$lib/post/application/gateway/postRepository';
import { GetAllPostsUseCase } from '$lib/post/application/useCase/getAllPostsUseCase';
import { GetPostUseCase } from '$lib/post/application/useCase/getPostUseCase';
import { PostApiServiceImpl } from '$lib/post/framework/api/postApiServiceImpl';
export class Container {
private fetchFn: typeof fetch;
private _authApiService?: AuthApiService;
private _imageApiService?: ImageApiService;
private _postApiService?: PostApiService;
private _authRepository?: AuthRepository;
private _imageRepository?: ImageRepository;
private _postRepository?: PostRepository;
private _getCurrentUserUseCase?: GetCurrentUserUseCase;
private _uploadImageUseCase?: UploadImageUseCase;
private _getAllPostUseCase?: GetAllPostsUseCase;
private _getPostUseCase?: GetPostUseCase;
constructor(fetchFn: typeof fetch) {
this.fetchFn = fetchFn;
}
private get authApiService(): AuthApiService {
this._authApiService ??= new AuthApiServiceImpl(this.fetchFn);
return this._authApiService;
}
private get imageApiService(): ImageApiService {
this._imageApiService ??= new ImageApiServiceImpl(this.fetchFn);
return this._imageApiService;
}
private get postApiService(): PostApiService {
this._postApiService ??= new PostApiServiceImpl(this.fetchFn);
return this._postApiService;
}
private get authRepository(): AuthRepository {
this._authRepository ??= new AuthRepositoryImpl(this.authApiService);
return this._authRepository;
}
private get imageRepository(): ImageRepository {
this._imageRepository ??= new ImageRepositoryImpl(this.imageApiService);
return this._imageRepository;
}
private get postRepository(): PostRepository {
this._postRepository ??= new PostRepositoryImpl(this.postApiService);
return this._postRepository;
}
}
class ApiService

View File

@ -1,5 +1,5 @@
<script>
import MottoAnimatedMark from './MottoAnimatedMark.svelte';
import MottoAnimatedMark from '$lib/home/framework/ui/MottoAnimatedMark.svelte';
</script>
<div

View File

@ -1,6 +1,6 @@
<script lang="ts">
import { getContext } from 'svelte';
import UploadImageDialoag from './UploadImageDialoag.svelte';
import UploadImageDialoag from '$lib/image/framework/ui/UploadImageDialoag.svelte';
import { ImageBloc, ImageEventType } from '$lib/image/adapter/presenter/imageBloc';
import { StatusType } from '$lib/common/adapter/presenter/asyncState';
import { toast } from 'svelte-sonner';

View File

@ -57,7 +57,7 @@
<DialogTitle>Upload Image</DialogTitle>
</DialogHeader>
<form id="upload-form" onsubmit={onSubmit}>
<form id="upload-image-form" onsubmit={onSubmit}>
<Label for="file-input" class="pb-2">
{`Image File (${imageMimeTypes.join(', ')})`}
</Label>
@ -77,7 +77,7 @@
<DialogFooter class="mt-6">
<Button variant="outline" onclick={close} {disabled}>Cancel</Button>
<Button type="submit" form="upload-form" {disabled}>Submit</Button>
<Button type="submit" form="upload-image-form" {disabled}>Submit</Button>
</DialogFooter>
</DialogContent>
</Dialog>

View File

@ -0,0 +1,35 @@
<script lang="ts">
import { Button, buttonVariants } from '$lib/common/framework/components/ui/button';
import { Dialog } from '$lib/common/framework/components/ui/dialog';
import DialogContent from '$lib/common/framework/components/ui/dialog/dialog-content.svelte';
import DialogFooter from '$lib/common/framework/components/ui/dialog/dialog-footer.svelte';
import DialogHeader from '$lib/common/framework/components/ui/dialog/dialog-header.svelte';
import DialogTitle from '$lib/common/framework/components/ui/dialog/dialog-title.svelte';
import DialogTrigger from '$lib/common/framework/components/ui/dialog/dialog-trigger.svelte';
const {
disabled,
onSubmit: createPost,
}: {
disabled: boolean;
onSubmit: () => Promise<void>;
} = $props();
</script>
<Dialog>
<DialogTrigger class={buttonVariants({ variant: 'default' })}>Create</DialogTrigger>
<DialogContent
showCloseButton={false}
onInteractOutside={(e) => e.preventDefault()}
onEscapeKeydown={(e) => e.preventDefault()}
>
<DialogHeader class="mb-4">
<DialogTitle>Create Post</DialogTitle>
</DialogHeader>
<DialogFooter class="mt-6">
<Button variant="outline" onclick={close} {disabled}>Cancel</Button>
<Button type="submit" form="upload-image-form" {disabled}>Submit</Button>
</DialogFooter>
</DialogContent>
</Dialog>

View File

@ -0,0 +1,11 @@
<script>
import CreatePostDialog from '$lib/post/framework/ui/CreatePostDialog.svelte';
</script>
<div class="dashboard-container mb-10">
<div class="flex flex-row items-center justify-between">
<h1 class="py-16 text-5xl font-bold text-gray-800">Image</h1>
<CreatePostDialog disabled={isLoading} onSubmit={onUploadImageDialogSubmit} />
</div>
<p>Gallery is currently unavailable.</p>
</div>