From c2462fe53783cfef59ceac025891d1f6c8eb98bd Mon Sep 17 00:00:00 2001 From: SquidSpirit Date: Thu, 24 Jul 2025 00:32:20 +0800 Subject: [PATCH] BLOG-44 Post overall page (#64) ### Description - Change the format of color response ```json { "red": 0, "green": 255, "blue": 128, "alpha": 255 } ``` - The relationship between the label's background color and its highlight color is calculated. The method involves first converting the RGB color value to HSL, then decreasing the L (lightness) component, and finally converting it back to RGB. ### Package Changes ```json { "zod": "^4.0.5" } ``` ### Screenshots |Desktop|Mobile| |-|-| |![image.png](/attachments/851450c4-0975-4b66-9bf7-606d0114c03e)|![image.png](/attachments/f263d65c-89e9-4439-8d50-ae92ae9482ac)| ### Reference Resolves #44 ### Checklist - [x] A milestone is set - [x] The related issuse has been linked to this branch Reviewed-on: https://git.squidspirit.com/squid/blog/pulls/64 Co-authored-by: SquidSpirit Co-committed-by: SquidSpirit --- backend/feature/post/src/adapter/delivery.rs | 1 + .../adapter/delivery/color_response_dto.rs | 22 ++++ .../adapter/delivery/label_response_dto.rs | 8 +- backend/feature/post/src/adapter/gateway.rs | 4 + .../post/src/adapter/gateway/color_mapper.rs | 16 +++ .../post/src/adapter/gateway/label_mapper.rs | 17 +++ .../src/adapter/gateway/post_db_service.rs | 9 +- .../src/adapter/gateway/post_info_mapper.rs | 27 +++++ .../post/src/adapter/gateway/post_mapper.rs | 17 +++ .../adapter/gateway/post_repository_impl.rs | 15 ++- backend/feature/post/src/domain/entity.rs | 1 + .../feature/post/src/domain/entity/color.rs | 6 + .../feature/post/src/domain/entity/label.rs | 4 +- .../src/framework/db/post_db_service_impl.rs | 68 ++++++----- frontend/package.json | 3 +- frontend/pnpm-lock.yaml | 8 ++ frontend/src/app.css | 6 +- .../common/adapter/presenter/asyncState.ts | 26 ++++ .../src/lib/common/framework/ui/Navbar.svelte | 5 + frontend/src/lib/environment.ts | 5 + .../src/lib/home/framework/ui/HomePage.svelte | 11 ++ .../src/lib/home/framework/ui/Motto.svelte | 4 +- .../framework/ui/MottoAnimatedMark.svelte | 6 +- .../src/lib/home/framework/ui/Terminal.svelte | 4 +- .../lib/home/framework/ui/TitleScreen.svelte | 4 +- .../ui/TitleScreenAnimatedTags.svelte | 9 +- .../post/adapter/gateway/colorResponseDto.ts | 42 +++++++ .../post/adapter/gateway/labelResponseDto.ts | 38 ++++++ .../post/adapter/gateway/postApiService.ts | 5 + .../adapter/gateway/postInfoResponseDto.ts | 60 +++++++++ .../adapter/gateway/postRepositoryImpl.ts | 12 ++ .../post/adapter/presenter/colorViewModel.ts | 114 ++++++++++++++++++ .../post/adapter/presenter/labelViewModel.ts | 22 ++++ .../adapter/presenter/postInfoViewModel.ts | 38 ++++++ .../post/adapter/presenter/postListBloc.ts | 44 +++++++ .../application/repository/postRepository.ts | 5 + .../application/useCase/getAllPostsUseCase.ts | 10 ++ frontend/src/lib/post/domain/entity/color.ts | 13 ++ frontend/src/lib/post/domain/entity/label.ts | 13 ++ .../src/lib/post/domain/entity/postInfo.ts | 26 ++++ .../post/framework/api/postApiServiceImpl.ts | 19 +++ .../post/framework/ui/PostOverallPage.svelte | 22 ++++ .../lib/post/framework/ui/PostPreview.svelte | 41 +++++++ .../framework/ui/PostPreviewLabels.svelte | 25 ++++ frontend/src/routes/+page.svelte | 10 +- frontend/src/routes/post/+page.svelte | 17 +++ frontend/vite.config.ts | 9 ++ 47 files changed, 825 insertions(+), 66 deletions(-) create mode 100644 backend/feature/post/src/adapter/delivery/color_response_dto.rs create mode 100644 backend/feature/post/src/adapter/gateway/color_mapper.rs create mode 100644 backend/feature/post/src/adapter/gateway/label_mapper.rs create mode 100644 backend/feature/post/src/adapter/gateway/post_info_mapper.rs create mode 100644 backend/feature/post/src/adapter/gateway/post_mapper.rs create mode 100644 backend/feature/post/src/domain/entity/color.rs create mode 100644 frontend/src/lib/common/adapter/presenter/asyncState.ts create mode 100644 frontend/src/lib/environment.ts create mode 100644 frontend/src/lib/home/framework/ui/HomePage.svelte create mode 100644 frontend/src/lib/post/adapter/gateway/colorResponseDto.ts create mode 100644 frontend/src/lib/post/adapter/gateway/labelResponseDto.ts create mode 100644 frontend/src/lib/post/adapter/gateway/postApiService.ts create mode 100644 frontend/src/lib/post/adapter/gateway/postInfoResponseDto.ts create mode 100644 frontend/src/lib/post/adapter/gateway/postRepositoryImpl.ts create mode 100644 frontend/src/lib/post/adapter/presenter/colorViewModel.ts create mode 100644 frontend/src/lib/post/adapter/presenter/labelViewModel.ts create mode 100644 frontend/src/lib/post/adapter/presenter/postInfoViewModel.ts create mode 100644 frontend/src/lib/post/adapter/presenter/postListBloc.ts create mode 100644 frontend/src/lib/post/application/repository/postRepository.ts create mode 100644 frontend/src/lib/post/application/useCase/getAllPostsUseCase.ts create mode 100644 frontend/src/lib/post/domain/entity/color.ts create mode 100644 frontend/src/lib/post/domain/entity/label.ts create mode 100644 frontend/src/lib/post/domain/entity/postInfo.ts create mode 100644 frontend/src/lib/post/framework/api/postApiServiceImpl.ts create mode 100644 frontend/src/lib/post/framework/ui/PostOverallPage.svelte create mode 100644 frontend/src/lib/post/framework/ui/PostPreview.svelte create mode 100644 frontend/src/lib/post/framework/ui/PostPreviewLabels.svelte create mode 100644 frontend/src/routes/post/+page.svelte diff --git a/backend/feature/post/src/adapter/delivery.rs b/backend/feature/post/src/adapter/delivery.rs index 02884a5..344245b 100644 --- a/backend/feature/post/src/adapter/delivery.rs +++ b/backend/feature/post/src/adapter/delivery.rs @@ -1,3 +1,4 @@ +pub mod color_response_dto; pub mod label_response_dto; pub mod post_controller; pub mod post_info_query_dto; diff --git a/backend/feature/post/src/adapter/delivery/color_response_dto.rs b/backend/feature/post/src/adapter/delivery/color_response_dto.rs new file mode 100644 index 0000000..0d8e1cf --- /dev/null +++ b/backend/feature/post/src/adapter/delivery/color_response_dto.rs @@ -0,0 +1,22 @@ +use serde::Serialize; + +use crate::domain::entity::color::Color; + +#[derive(Serialize)] +pub struct ColorResponseDto { + pub red: u8, + pub green: u8, + pub blue: u8, + pub alpha: u8, +} + +impl From for ColorResponseDto { + fn from(color: Color) -> Self { + Self { + red: color.red, + green: color.green, + blue: color.blue, + alpha: color.alpha, + } + } +} diff --git a/backend/feature/post/src/adapter/delivery/label_response_dto.rs b/backend/feature/post/src/adapter/delivery/label_response_dto.rs index e709c27..9da46d3 100644 --- a/backend/feature/post/src/adapter/delivery/label_response_dto.rs +++ b/backend/feature/post/src/adapter/delivery/label_response_dto.rs @@ -1,12 +1,14 @@ use serde::Serialize; -use crate::domain::entity::label::Label; +use crate::{ + adapter::delivery::color_response_dto::ColorResponseDto, domain::entity::label::Label, +}; #[derive(Serialize)] pub struct LabelResponseDto { pub id: i32, pub name: String, - pub color: String, + pub color: ColorResponseDto, } impl From