feat: add liked for post and note model

Signed-off-by: Innei <tukon479@gmail.com>
This commit is contained in:
Innei
2022-12-22 18:07:40 +08:00
parent f976e3411b
commit 1073c67646
5 changed files with 25 additions and 9 deletions

View File

@@ -3,7 +3,11 @@ import { IController } from '~/interfaces/controller'
import { IRequestHandler, RequestProxyResult } from '~/interfaces/request'
import { SelectFields } from '~/interfaces/types'
import { PaginateResult } from '~/models/base'
import { NoteModel, NoteWrappedPayload } from '~/models/note'
import {
NoteModel,
NoteWrappedPayload,
NoteWrappedWithLikedPayload,
} from '~/models/note'
import { autoBind } from '~/utils/auto-bind'
import { HTTPClient } from '../core/client'
@@ -40,11 +44,11 @@ export class NoteController<ResponseWrapper> implements IController {
* 最新日记
*/
getLatest() {
return this.proxy.latest.get<NoteWrappedPayload>()
return this.proxy.latest.get<NoteWrappedWithLikedPayload>()
}
/**
* 获取一篇日记, 根据 Id 查询需要鉴权
* 获取一篇日记根据 Id 查询需要鉴权
* @param id id | nid
* @param password 访问密码
*/
@@ -68,7 +72,7 @@ export class NoteController<ResponseWrapper> implements IController {
const [id, password = undefined, singleResult = false] = rest
if (typeof id === 'number') {
return this.proxy.nid(id.toString()).get<NoteWrappedPayload>({
return this.proxy.nid(id.toString()).get<NoteWrappedWithLikedPayload>({
params: { password, single: singleResult ? '1' : undefined },
})
} else {

View File

@@ -2,7 +2,7 @@ import { IRequestAdapter } from '~/interfaces/adapter'
import { IController } from '~/interfaces/controller'
import { IRequestHandler, RequestProxyResult } from '~/interfaces/request'
import { SelectFields } from '~/interfaces/types'
import { PaginateResult } from '~/models/base'
import { ModelWithLiked, PaginateResult } from '~/models/base'
import { PostModel } from '~/models/post'
import { autoBind } from '~/utils/auto-bind'
@@ -65,7 +65,7 @@ export class PostController<ResponseWrapper> implements IController {
getPost(
categoryName: string,
slug: string,
): RequestProxyResult<PostModel, ResponseWrapper>
): RequestProxyResult<ModelWithLiked<PostModel>, ResponseWrapper>
/**
* 根据 ID 查找文章
* @param id
@@ -83,7 +83,7 @@ export class PostController<ResponseWrapper> implements IController {
* 获取最新的文章
*/
getLatest() {
return this.proxy.latest.get<PostModel>()
return this.proxy.latest.get<ModelWithLiked<PostModel>>()
}
/**

View File

@@ -43,3 +43,7 @@ export interface TextBaseModel extends BaseCommentIndexModel {
meta?: Record<string, any>
}
export type ModelWithLiked<T> = T & {
liked: boolean
}

View File

@@ -1,4 +1,4 @@
import { TextBaseModel } from './base'
import { ModelWithLiked, TextBaseModel } from './base'
import { TopicModel } from './topic'
export interface NoteModel extends TextBaseModel {
@@ -38,3 +38,9 @@ export interface NoteWrappedPayload {
next?: Partial<NoteModel>
prev?: Partial<NoteModel>
}
export interface NoteWrappedWithLikedPayload {
data: ModelWithLiked<NoteModel>
next?: Partial<NoteModel>
prev?: Partial<NoteModel>
}

View File

@@ -51,7 +51,9 @@
],
"after": [
"npm publish --access=public"
]
],
"tag": false,
"commit_message": "chore(release): bump @mx-space/api-client to v${NEW_VERSION}"
},
"lint-staged": {
"*.{js,jsx,ts,tsx}": [