Skip to content
This repository was archived by the owner on Nov 8, 2022. It is now read-only.

Commit 162c729

Browse files
authored
refactor: move thread logic to sidebar (#1107)
* refactor(tagslist): add type & adjust text * refactor(tagslist): types * fix(tags): hashtag color not right * style: taga, header, footer adjust * chore: threadsidebar tags with adjust * refactor(common-thread-logic): extract general logic * refactor(common-thread-logic): clean up * refactor(common-thread-logic): move route sync to drawer * refactor(common-thread-logic): move resetViewing to drawer * refactor(contentFilter): rename to ArticlesFilter * refactor(articlesFilter): drop faq concept * chore: missing type
1 parent 2b0fa1d commit 162c729

File tree

78 files changed

+576
-839
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+576
-839
lines changed

config/label_pool.ts

Lines changed: 0 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -9,63 +9,6 @@ const LABEL_POOL = {
99
city: {
1010
iconSrc: `${ICON_CMD}/city_map.svg`,
1111
},
12-
salary: {
13-
iconSrc: `${ICON_CMD}/money_yuan.svg`,
14-
data: [
15-
'2k以下',
16-
'2k-5k',
17-
'5k-10k',
18-
'10k-15k',
19-
'15k-25k',
20-
'25k-50k',
21-
'50k以上',
22-
],
23-
},
24-
exp: {
25-
iconSrc: `${ICON_CMD}/footer_exp.svg`,
26-
data: ['不限', '应届', '3年以下', '3-5年', '5-10年', '10年以上'],
27-
},
28-
education: {
29-
iconSrc: `${ICON_CMD}/profile_education.svg`,
30-
data: ['不限', '大专', '本科', '硕士', '博士'],
31-
},
32-
finance: {
33-
data: [
34-
'未融资',
35-
'天使轮',
36-
'A轮',
37-
'B轮',
38-
'C轮',
39-
'D轮以上',
40-
'已上市',
41-
'不需融资',
42-
],
43-
iconSrc: `${ICON_CMD}/stock2.svg`,
44-
},
45-
scale: {
46-
iconSrc: `${ICON_CMD}/footer_scale.svg`,
47-
data: [
48-
'少于15人',
49-
'15-50人',
50-
'50-150人',
51-
'150-500人',
52-
'500-2000人',
53-
'2000人以上',
54-
],
55-
},
56-
field: {
57-
iconSrc: `${ICON_CMD}/footer_field.svg`,
58-
data: [
59-
'互联网',
60-
'电子商务',
61-
'金融',
62-
'企业服务',
63-
'教育',
64-
'游戏',
65-
'O2O',
66-
'区块链',
67-
],
68-
},
6912
}
7013

7114
export default LABEL_POOL

server/routes.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ router.route('/recipes/:slug?').get((req, res) => {
5757
return renderAndCache({ req, res, path: '/recipes' })
5858
})
5959

60-
// 活动
60+
// 小聚
6161
router.route('/meetups/:slug?').get((req, res) => {
6262
return renderAndCache({ req, res, path: '/meetups' })
6363
})
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/*
2+
*
3+
* ArticlesFilter
4+
*
5+
*/
6+
7+
import { FC, memo } from 'react'
8+
9+
import type { TThread, TAccount, TArticleFilter } from '@/spec'
10+
import { THREAD } from '@/constant'
11+
import { buildLog } from '@/utils'
12+
13+
import FilterButton from './FilterButton'
14+
import SelectedTags from './SelectedTags'
15+
import FilterResult from './FilterResult'
16+
17+
import { Wrapper, MainFilterWrapper } from './styles'
18+
19+
/* eslint-disable-next-line */
20+
const log = buildLog('c:ArticlesFilter:index')
21+
22+
type TProps = {
23+
activeFilter: TArticleFilter
24+
onSelect: (filter: TArticleFilter) => void
25+
thread: TThread
26+
accountInfo: TAccount
27+
totalCount?: number
28+
}
29+
30+
const ArticlesFilter: FC<TProps> = ({
31+
thread = THREAD.POST,
32+
activeFilter = {},
33+
onSelect,
34+
accountInfo: { isLogin },
35+
totalCount = 0,
36+
}) => (
37+
<Wrapper>
38+
<MainFilterWrapper>
39+
<FilterButton
40+
thread={thread}
41+
onSelect={onSelect}
42+
isLogin={isLogin}
43+
activeFilter={activeFilter}
44+
/>
45+
46+
<SelectedTags onSelect={onSelect} activeFilter={activeFilter} />
47+
</MainFilterWrapper>
48+
<FilterResult totalCount={totalCount} />
49+
</Wrapper>
50+
)
51+
52+
export default memo(ArticlesFilter)

src/components/ContentFilter/FilterButton.js renamed to src/components/ArticlesFilter/FilterButton.tsx

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import React from 'react'
1+
import { FC, memo } from 'react'
22
import dynamic from 'next/dynamic'
33

4+
import type { TThread, TArticleFilter } from '@/spec'
45
import { ICON_CMD } from '@/config'
56

67
import Tooltip from '@/components/Tooltip'
@@ -18,7 +19,19 @@ const FilterPanel = dynamic(() => import('./FilterPanel/index'), {
1819
ssr: false,
1920
})
2021

21-
const FilterButton = ({ thread, onSelect, isLogin, activeFilter }) => {
22+
type TProps = {
23+
thread: TThread
24+
isLogin: boolean
25+
activeFilter: TArticleFilter
26+
onSelect: (filter: TArticleFilter) => void
27+
}
28+
29+
const FilterButton: FC<TProps> = ({
30+
thread,
31+
onSelect,
32+
isLogin,
33+
activeFilter,
34+
}) => {
2235
return (
2336
<Wrapper>
2437
<Tooltip
@@ -38,7 +51,7 @@ const FilterButton = ({ thread, onSelect, isLogin, activeFilter }) => {
3851
>
3952
<ButtonWrapper size="small" type="primary" ghost>
4053
<InnerBtnWrapper>
41-
综合排序
54+
默认排序
4255
<FilterIcon src={`${ICON_CMD}/dropdown_arrow.svg`} />
4356
</InnerBtnWrapper>
4457
</ButtonWrapper>
@@ -47,4 +60,4 @@ const FilterButton = ({ thread, onSelect, isLogin, activeFilter }) => {
4760
)
4861
}
4962

50-
export default React.memo(FilterButton)
63+
export default memo(FilterButton)

src/components/ContentFilter/FilterPanel/LengthFilter.js renamed to src/components/ArticlesFilter/FilterPanel/LengthFilter.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import React from 'react'
1+
import { FC, memo } from 'react'
22

3+
import type { TArticleFilter } from '@/spec'
34
import { ICON_CMD } from '@/config'
45
import { FILTER } from '@/constant'
56

@@ -12,7 +13,12 @@ import {
1213
SelectItem,
1314
} from '../styles'
1415

15-
const LengthFilter = ({ activeFilter, onSelect }) => (
16+
type TProps = {
17+
activeFilter: TArticleFilter
18+
onSelect: (filter: TArticleFilter) => void
19+
}
20+
21+
const LengthFilter: FC<TProps> = ({ activeFilter, onSelect }) => (
1622
<ColumnWrapper>
1723
<SelectLabel>
1824
<SelectIcon src={`${ICON_CMD}/ruler.svg`} reverse />
@@ -34,4 +40,4 @@ const LengthFilter = ({ activeFilter, onSelect }) => (
3440
</ColumnWrapper>
3541
)
3642

37-
export default React.memo(LengthFilter)
43+
export default memo(LengthFilter)

src/components/ContentFilter/FilterPanel/RepoSortFilter.js renamed to src/components/ArticlesFilter/FilterPanel/RepoSortFilter.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import React from 'react'
1+
import { FC, memo } from 'react'
22

3+
import type { TArticleFilter } from '@/spec'
34
import { ICON_CMD } from '@/config'
45
import { FILTER } from '@/constant'
56

@@ -13,7 +14,12 @@ import {
1314
SelectItem,
1415
} from '../styles'
1516

16-
const RepoSortFilter = ({ activeFilter, onSelect }) => (
17+
type TProps = {
18+
activeFilter: TArticleFilter
19+
onSelect: (filter: TArticleFilter) => void
20+
}
21+
22+
const RepoSortFilter: FC<TProps> = ({ activeFilter, onSelect }) => (
1723
<ColumnWrapper>
1824
<SelectLabel>
1925
<SelectIcon src={`${ICON_CMD}/click.svg`} />
@@ -64,4 +70,4 @@ const RepoSortFilter = ({ activeFilter, onSelect }) => (
6470
</ColumnWrapper>
6571
)
6672

67-
export default React.memo(RepoSortFilter)
73+
export default memo(RepoSortFilter)

src/components/ContentFilter/FilterPanel/SortFilter.js renamed to src/components/ArticlesFilter/FilterPanel/SortFilter.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import React from 'react'
1+
import { FC, memo } from 'react'
22

3+
import type { TArticleFilter } from '@/spec'
34
import { ICON_CMD } from '@/config'
45
import { FILTER } from '@/constant'
56

@@ -12,7 +13,12 @@ import {
1213
SelectItem,
1314
} from '../styles'
1415

15-
const SortFilter = ({ activeFilter, onSelect }) => (
16+
type TProps = {
17+
activeFilter: TArticleFilter
18+
onSelect: (filter: TArticleFilter) => void
19+
}
20+
21+
const SortFilter: FC<TProps> = ({ activeFilter, onSelect }) => (
1622
<ColumnWrapper>
1723
<SelectLabel>
1824
<SelectIcon src={`${ICON_CMD}/click.svg`} />
@@ -47,4 +53,4 @@ const SortFilter = ({ activeFilter, onSelect }) => (
4753
</ColumnWrapper>
4854
)
4955

50-
export default React.memo(SortFilter)
56+
export default memo(SortFilter)

src/components/ContentFilter/FilterPanel/TimeFilter.js renamed to src/components/ArticlesFilter/FilterPanel/TimeFilter.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import React from 'react'
1+
import { FC, memo } from 'react'
22

3+
import type { TArticleFilter } from '@/spec'
34
import { ICON_CMD } from '@/config'
45
import { FILTER } from '@/constant'
56

@@ -12,7 +13,12 @@ import {
1213
SelectItem,
1314
} from '../styles'
1415

15-
const TimeFilter = ({ activeFilter, onSelect }) => (
16+
type TProps = {
17+
activeFilter: TArticleFilter
18+
onSelect: (filter: TArticleFilter) => void
19+
}
20+
21+
const TimeFilter: FC<TProps> = ({ activeFilter, onSelect }) => (
1622
<ColumnWrapper>
1723
<SelectLabel>
1824
<SelectIcon src={`${ICON_CMD}/duration.svg`} />
@@ -46,4 +52,4 @@ const TimeFilter = ({ activeFilter, onSelect }) => (
4652
</ColumnWrapper>
4753
)
4854

49-
export default React.memo(TimeFilter)
55+
export default memo(TimeFilter)

src/components/ContentFilter/FilterPanel/ViewedFilter.js renamed to src/components/ArticlesFilter/FilterPanel/ViewedFilter.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import React from 'react'
1+
import { FC, memo } from 'react'
22

3+
import type { TArticleFilter } from '@/spec'
34
import { ICON_CMD } from '@/config'
45
import { FILTER } from '@/constant'
56

@@ -12,7 +13,12 @@ import {
1213
SelectItem,
1314
} from '../styles'
1415

15-
const ViewedFilter = ({ activeFilter, onSelect }) => (
16+
type TProps = {
17+
activeFilter: TArticleFilter
18+
onSelect: (filter: TArticleFilter) => void
19+
}
20+
21+
const ViewedFilter: FC<TProps> = ({ activeFilter, onSelect }) => (
1622
<ColumnWrapper>
1723
<SelectLabel>
1824
<SelectIcon src={`${ICON_CMD}/user_been_views.svg`} />
@@ -44,4 +50,4 @@ const ViewedFilter = ({ activeFilter, onSelect }) => (
4450
</ColumnWrapper>
4551
)
4652

47-
export default React.memo(ViewedFilter)
53+
export default memo(ViewedFilter)

src/components/ContentFilter/FilterPanel/index.js renamed to src/components/ArticlesFilter/FilterPanel/index.tsx

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,29 @@
1-
import React from 'react'
1+
import { FC, memo } from 'react'
22

3+
import type { TThread, TArticleFilter } from '@/spec'
34
import { THREAD } from '@/constant'
45

56
import TimeFilter from './TimeFilter'
67
import SortFilter from './SortFilter'
78
import RepoSortFilter from './RepoSortFilter'
89
import LengthFilter from './LengthFilter'
910
import ViewedFilter from './ViewedFilter'
10-
// job
11-
import JobSalaryFilter from './JobSalaryFilter'
12-
import JobExpFilter from './JobExpFilter'
13-
import JobEducationFilter from './JobEducationFilter'
14-
import JobFieldFilter from './JobFieldFilter'
15-
import JobFinanceFilter from './JobFinanceFilter'
16-
import JobScaleFilter from './JobScaleFilter'
1711

1812
import { FilterPanelWrapper } from '../styles'
1913

20-
const FilterPanel = ({ thread, activeFilter, onSelect, isLogin }) => {
14+
type TProps = {
15+
activeFilter: TArticleFilter
16+
onSelect: (filter: TArticleFilter) => void
17+
thread: TThread
18+
isLogin?: boolean
19+
}
20+
21+
const FilterPanel: FC<TProps> = ({
22+
thread,
23+
activeFilter,
24+
onSelect,
25+
isLogin,
26+
}) => {
2127
switch (thread) {
2228
case THREAD.POST:
2329
return (
@@ -47,12 +53,6 @@ const FilterPanel = ({ thread, activeFilter, onSelect, isLogin }) => {
4753
<FilterPanelWrapper>
4854
<TimeFilter activeFilter={activeFilter} onSelect={onSelect} />
4955
<SortFilter activeFilter={activeFilter} onSelect={onSelect} />
50-
<JobSalaryFilter activeFilter={activeFilter} onSelect={onSelect} />
51-
<JobExpFilter activeFilter={activeFilter} onSelect={onSelect} />
52-
<JobEducationFilter activeFilter={activeFilter} onSelect={onSelect} />
53-
<JobFieldFilter activeFilter={activeFilter} onSelect={onSelect} />
54-
<JobFinanceFilter activeFilter={activeFilter} onSelect={onSelect} />
55-
<JobScaleFilter activeFilter={activeFilter} onSelect={onSelect} />
5656
{isLogin && (
5757
<ViewedFilter activeFilter={activeFilter} onSelect={onSelect} />
5858
)}
@@ -70,4 +70,4 @@ const FilterPanel = ({ thread, activeFilter, onSelect, isLogin }) => {
7070
}
7171
}
7272

73-
export default React.memo(FilterPanel)
73+
export default memo(FilterPanel)

0 commit comments

Comments
 (0)