From 77d1ec96ea0c7222c0c4903e4994432ea735a38b Mon Sep 17 00:00:00 2001 From: mydearxym Date: Tue, 9 Nov 2021 22:31:40 +0800 Subject: [PATCH 01/10] refactor(user-page): load works only when use is maker --- src/containers/content/UserContent/logic.ts | 15 +++++++++++++++ src/containers/content/UserContent/schema.ts | 16 ++++++++++++++++ src/containers/user/UserProfile/schema.ts | 2 +- src/pages/user/[login].tsx | 11 +---------- src/schemas/pages/user.ts | 1 + src/spec/account.ts | 1 + src/stores/Model/User.ts | 1 + src/widgets/UserBrief/index.tsx | 2 +- 8 files changed, 37 insertions(+), 12 deletions(-) diff --git a/src/containers/content/UserContent/logic.ts b/src/containers/content/UserContent/logic.ts index 0e94a6fdb..643b7c04f 100755 --- a/src/containers/content/UserContent/logic.ts +++ b/src/containers/content/UserContent/logic.ts @@ -78,6 +78,14 @@ const loadEditableCommunities = () => { sr71$.query(S.editableCommunities, { login, filter }) } +const loadPublishedWorks = (): void => { + const { viewingUser: user } = store + if (!user.isMaker) return + + const filter = { page: 1, size: 10 } + sr71$.query(S.pagedPublishedWorks, { login: user.login, filter }) +} + const DataSolver = [ { match: asyncRes('follow'), @@ -91,6 +99,13 @@ const DataSolver = [ match: asyncRes('editableCommunities'), action: ({ editableCommunities }) => { store.mark({ pagedEditableCommunities: editableCommunities }) + loadPublishedWorks() + }, + }, + { + match: asyncRes('pagedPublishedWorks'), + action: ({ pagedPublishedWorks }) => { + store.mark({ pagedWorks: pagedPublishedWorks }) }, }, { diff --git a/src/containers/content/UserContent/schema.ts b/src/containers/content/UserContent/schema.ts index 6e9d098d9..a5750bea4 100755 --- a/src/containers/content/UserContent/schema.ts +++ b/src/containers/content/UserContent/schema.ts @@ -36,11 +36,27 @@ const editableCommunities = gql` } ` +const pagedPublishedWorks = ` + query($login: String!, $filter: PagedFilter!) { + pagedPublishedWorks(login: $login, filter: $filter) { + entries { + id + title + cover + desc + homeLink + } + ${F.pagi} + } + } +` + const schema = { follow, undoFollow, user, editableCommunities, + pagedPublishedWorks, } export default schema diff --git a/src/containers/user/UserProfile/schema.ts b/src/containers/user/UserProfile/schema.ts index e1ffec096..1bb57e18e 100755 --- a/src/containers/user/UserProfile/schema.ts +++ b/src/containers/user/UserProfile/schema.ts @@ -1,5 +1,5 @@ import { gql } from '@urql/core' -import { P } from '@/schemas' +import { P, F } from '@/schemas' import { titleCase, plural } from '@/utils/helper' diff --git a/src/pages/user/[login].tsx b/src/pages/user/[login].tsx index 3b0a26d34..4515ebbf1 100755 --- a/src/pages/user/[login].tsx +++ b/src/pages/user/[login].tsx @@ -3,11 +3,10 @@ */ import { Provider } from 'mobx-react' -import { METRIC, THREAD } from '@/constant' +import { METRIC } from '@/constant' import { ssrGetParam, ssrFetchPrepare, - ssrPagedArticleSchema, ssrBaseStates, ssrError, refreshIfneed, @@ -34,16 +33,9 @@ const fetchData = async (context, opt = {}) => { filter, }) - const pagedWorks = gqClient.request(ssrPagedArticleSchema(THREAD.WORKS), { - login, - filter, - userHasLogin, - }) - return { ...(await sessionState), ...(await user), - ...(await pagedWorks), ...(await subscribedCommunities), } } @@ -68,7 +60,6 @@ export const getServerSideProps = async (context) => { // route: { mainPath: ROUTE.USER, subPath: user.id, query }, // userContent: { activeThread: query.tab || USER_THREAD.PROFILE }, viewing: { user }, - userContent: { pagedWorks }, userProfile: { subscribedCommunities }, } diff --git a/src/schemas/pages/user.ts b/src/schemas/pages/user.ts index 71e4d308c..17bcac3f4 100755 --- a/src/schemas/pages/user.ts +++ b/src/schemas/pages/user.ts @@ -11,6 +11,7 @@ export const user = ` ${F.userSocial} } meta { + isMaker publishedPostsCount publishedJobsCount publishedBlogsCount diff --git a/src/spec/account.ts b/src/spec/account.ts index a58c68a99..350becb9a 100644 --- a/src/spec/account.ts +++ b/src/spec/account.ts @@ -42,6 +42,7 @@ export type TUser = TSimpleUser & { insertedAt?: string views?: number meta?: { + isMaker: boolean publishedPostsCount: number publishedJobsCount: number publishedBlogsCount: number diff --git a/src/stores/Model/User.ts b/src/stores/Model/User.ts index 0e2493b1a..84ed44f58 100755 --- a/src/stores/Model/User.ts +++ b/src/stores/Model/User.ts @@ -60,6 +60,7 @@ const UserSocial = T.model('UserSocial', { }) const UserMeta = T.model('UserMeta', { + isMaker: T.optional(T.boolean, false), publishedBlogsCount: T.optional(T.number, 0), publishedJobsCount: T.optional(T.number, 0), publishedPostsCount: T.optional(T.number, 0), diff --git a/src/widgets/UserBrief/index.tsx b/src/widgets/UserBrief/index.tsx index c44843995..b657cebcf 100755 --- a/src/widgets/UserBrief/index.tsx +++ b/src/widgets/UserBrief/index.tsx @@ -52,7 +52,7 @@ const UserBrief: FC = ({ user, works, editableCommunities }) => { {user.bio} - {works.totalCount && ( + {works.totalCount !== 0 && ( From 9fe86327dfb7d892fb874252832b53ce08de2a99 Mon Sep 17 00:00:00 2001 From: mydearxym Date: Thu, 11 Nov 2021 22:55:32 +0800 Subject: [PATCH 02/10] refactor(comments): audition concept --- .../unit/Comments/Comment/Actions.tsx | 5 ++- .../Comment/DesktopView/DefaultLayout.tsx | 27 ++++++++++---- .../Comment/DesktopView/FoldLayout.tsx | 27 ++++++++++---- .../Comment/DesktopView/IllegalBar.tsx | 35 +++++++++++++++++++ .../unit/Comments/Comment/Footer.tsx | 7 +++- src/containers/unit/Comments/List/List.tsx | 1 + .../unit/Comments/List/RepliesList.tsx | 5 ++- .../comment/desktop_view/fold_layout.ts | 3 +- .../comment/desktop_view/illegal_bar.ts | 32 +++++++++++++++++ .../styles/comment/desktop_view/index.ts | 29 +-------------- src/schemas/fragments/base.ts | 3 ++ src/spec/article.ts | 3 ++ src/stores/Model/Comment.ts | 3 ++ src/widgets/EmotionSelector/index.tsx | 18 ++++++---- .../styles/selected_emotions/emotion_unit.ts | 2 +- src/widgets/Icons/Bot.tsx | 18 ++++++++++ 16 files changed, 163 insertions(+), 55 deletions(-) create mode 100644 src/containers/unit/Comments/Comment/DesktopView/IllegalBar.tsx create mode 100644 src/containers/unit/Comments/styles/comment/desktop_view/illegal_bar.ts create mode 100644 src/widgets/Icons/Bot.tsx diff --git a/src/containers/unit/Comments/Comment/Actions.tsx b/src/containers/unit/Comments/Comment/Actions.tsx index e1055bb75..55540c462 100755 --- a/src/containers/unit/Comments/Comment/Actions.tsx +++ b/src/containers/unit/Comments/Comment/Actions.tsx @@ -82,7 +82,10 @@ const Actions: FC = ({ data }) => { return ( - openReplyEditor(data)}>回复 + {data.meta.isLegal && ( + openReplyEditor(data)}>回复 + )} + = ({ apiMode, }) => { const { isPinned, meta } = data - const { isArticleAuthorUpvoted } = meta + const { isArticleAuthorUpvoted, isLegal, illegalReason, illegalWords } = meta const isSolution = false return ( @@ -97,11 +99,22 @@ const DefaultLayout: FC = ({
- {!isReply && data.replyTo && } - + {isLegal ? ( + + {!isReply && data.replyTo && } + + + ) : ( + + )} + + {/* */}