️ feat: refactor sorting parameters in post listing API and components

- Renamed `orderedBy` to `orderBy` and `reverse` to `desc` in ListPostsParams interface and related functions.
- Updated all usages of the sorting parameters in the post listing logic to reflect the new naming convention.

feat: add user-related API functions

- Implemented `getLoginUser` and `getUserById` functions in the user API to fetch user details.
- Enhanced user model to include `language` property.

feat: integrate next-intl for internationalization

- Added `next-intl` plugin to Next.js configuration for improved localization support.
- Removed previous i18n implementation and replaced it with a new structure using JSON files for translations.
- Created locale files for English, Japanese, and Chinese with basic translations.
- Implemented a request configuration to handle user locales and messages dynamically.

fix: clean up unused imports and code

- Removed unused i18n utility functions and language settings from device context.
- Cleaned up commented-out code in blog card component and sidebar.

chore: update dependencies

- Added `deepmerge` for merging locale messages.
- Updated package.json and pnpm-lock.yaml to reflect new dependencies.
This commit is contained in:
2025-07-26 09:48:23 +08:00
parent 9984f665d4
commit e659de23fb
46 changed files with 660 additions and 331 deletions

View File

@ -5,8 +5,8 @@ import axiosClient from "./client";
interface ListPostsParams {
page?: number;
size?: number;
orderedBy?: string;
reverse?: boolean;
orderBy?: string;
desc?: boolean;
keywords?: string;
}
@ -24,16 +24,16 @@ export async function getPostById(id: string): Promise<Post | null> {
export async function listPosts({
page = 1,
size = 10,
orderedBy = 'updated_at',
reverse = false,
orderBy = 'updated_at',
desc = false,
keywords = ''
}: ListPostsParams = {}): Promise<BaseResponse<Post[]>> {
const res = await axiosClient.get<BaseResponse<Post[]>>("/post/list", {
params: {
page,
size,
orderedBy,
reverse,
orderBy,
desc,
keywords
}
});

View File

@ -43,4 +43,18 @@ export async function ListOidcConfigs(): Promise<BaseResponse<OidcConfig[]>> {
"/user/oidc/list"
);
return res.data;
}
export async function getLoginUser(token: string = ""): Promise<BaseResponse<User>> {
const res = await axiosClient.get<BaseResponse<User>>("/user/me", {
headers: {
Authorization: `Bearer ${token}`
}
});
return res.data;
}
export async function getUserById(id: number): Promise<BaseResponse<User>> {
const res = await axiosClient.get<BaseResponse<User>>(`/user/u/${id}`);
return res.data;
}