Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Nov 1, 2021. It is now read-only.

Commit04de1f7

Browse files
committed
refactor(permission workflow): code refactor
1 parent2939681 commit04de1f7

File tree

15 files changed

+190
-202
lines changed

15 files changed

+190
-202
lines changed

‎components/UserCell/index.js‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ import { makeDebugger } from '../../utils'
1414
constdebug=makeDebugger('c:UserCell:index')
1515
/* eslint-enable no-unused-vars */
1616

17-
constUserCell=({ user, align, left, small})=>{
18-
return(
17+
constUserCell=({ user, align, left, small})=>(
18+
<div>
1919
<UserCellWrapperalign={align}left={left}>
2020
<Avatarsrc={user.avatar}alt={user.nickname}small={small}/>
2121
<NickName>{user.nickname}</NickName>
2222
</UserCellWrapper>
23-
)
24-
}
23+
</div>
24+
)
2525

2626
UserCell.propTypes={
2727
// https://www.npmjs.com/package/prop-types

‎containers/AccountEditor/logic.js‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ const updatableAttrs = [
4040
'nickname',
4141
'email',
4242
'location',
43-
'company',
44-
'education',
4543
'qq',
4644
'weibo',
4745
'weichat',

‎containers/AccountViewer/schema.js‎

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ const user = gql`
77
avatar
88
bio
99
fromGithub
10-
company
11-
education
1210
location
1311
qq
1412
weibo
@@ -29,8 +27,6 @@ const user = gql`
2927
constaccount=gql`
3028
query account {
3129
account {
32-
company
33-
education
3430
location
3531
qq
3632
weibo

‎containers/CommunityEditor/index.js‎

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,6 @@ class CommunityEditorContainer extends React.Component {
9090
note="用作 router 的唯一值,只能用英文。建议用社区的 translate 作为 raw 值, 比如 'javascript 中文社区', 对应的 raw 值为 'javascript'"
9191
onChange={logic.profileChange('raw')}
9292
/>
93-
<FormInputer
94-
label="类别:"
95-
value={communityData.category}
96-
onChange={logic.profileChange('category')}
97-
/>
9893
<FormInputer
9994
label="描述:"
10095
textarea

‎containers/CommunityEditor/logic.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export const uploadPic = pic => {
3434
}
3535

3636
exportconstmutateConfirm=()=>{
37-
constrequiredArgs=['title','desc','raw','category','logo']
37+
constrequiredArgs=['title','desc','raw','logo']
3838
constargs={
3939
...store.communityData,
4040
}

‎containers/CommunityEditor/schema.js‎

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,8 @@
11
importgqlfrom'graphql-tag'
22

33
constcreateCommunity=gql`
4-
mutation(
5-
$title: String!
6-
$desc: String!
7-
$logo: String!
8-
$raw: String!
9-
$category: String!
10-
) {
11-
createCommunity(
12-
title: $title
13-
desc: $desc
14-
logo: $logo
15-
raw: $raw
16-
category: $category
17-
) {
4+
mutation($title: String!, $desc: String!, $logo: String!, $raw: String!) {
5+
createCommunity(title: $title, desc: $desc, logo: $logo, raw: $raw) {
186
id
197
title
208
desc
@@ -29,15 +17,13 @@ const updateCommunity = gql`
2917
$desc: String
3018
$logo: String
3119
$raw: String
32-
$category: String
3320
) {
3421
updateCommunity(
3522
id: $id
3623
title: $title
3724
desc: $desc
3825
logo: $logo
3926
raw: $raw
40-
category: $category
4127
) {
4228
id
4329
title
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
importReactfrom'react'
2+
importRfrom'ramda'
3+
4+
import{CommunityMatrix}from'../../components'
5+
import{Wrapper}from'./styles/community_list'
6+
7+
import{isEmptyNil,isObject}from'../../utils'
8+
import{communitySelect,communityAddOnSelect}from'./logic'
9+
10+
constgetManagedCommunitiesRaws=userRules=>{
11+
constuserRulesByCommunities=R.filter(isObject,JSON.parse(userRules))
12+
constckeys=R.keys(userRulesByCommunities)
13+
14+
returnckeys
15+
}
16+
17+
constCommunityList=({ data, userRules, activeRaw})=>{
18+
if(!data)return<div/>
19+
userRules=isEmptyNil(userRules) ?'{}' :userRules
20+
21+
constmanagerdRaws=getManagedCommunitiesRaws(userRules)
22+
23+
return(
24+
<Wrapper>
25+
<CommunityMatrix
26+
data={data}
27+
onSelect={communitySelect}
28+
onAddOnSelect={communityAddOnSelect}
29+
activeRaw={activeRaw}
30+
lens={managerdRaws}
31+
/>
32+
</Wrapper>
33+
)
34+
}
35+
36+
exportdefaultCommunityList
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
importReactfrom'react'
2+
importRfrom'ramda'
3+
4+
import{ICON_CMD}from'../../config'
5+
6+
import{
7+
Wrapper,
8+
PermissionWrapper,
9+
PerItem,
10+
PerTitle,
11+
CheckIcon,
12+
}from'./styles/permission_list'
13+
14+
import{
15+
uid,
16+
isEmptyNil,
17+
isObject,
18+
maybe,
19+
mapKey,
20+
mapValue,
21+
objToArray,
22+
}from'../../utils'
23+
24+
import{onRuleClick}from'./logic'
25+
26+
constvalueIsObj=v=>isObject(v)
27+
constvalueIsNotObj=R.complement(valueIsObj)
28+
29+
constgetCurUserRules=(data,curView,activeRaw)=>{
30+
constuserPermissions=JSON.parse(data)
31+
constuserRulesByCommunities=R.filter(valueIsObj,userPermissions)
32+
33+
if(curView==='general'){
34+
returnR.pickBy(valueIsNotObj,userPermissions)
35+
}
36+
37+
returnmaybe(userRulesByCommunities[activeRaw],{})
38+
}
39+
40+
constgetJson=value=>{
41+
returnisEmptyNil(value) ?{} :JSON.parse(value)
42+
}
43+
44+
constCheckMark=({ active})=>{
45+
return<CheckIconsrc={`${ICON_CMD}/check.svg`}active={active}/>
46+
}
47+
48+
constPermissionList=({
49+
data,
50+
allRules,
51+
selectRules,
52+
curView,
53+
activeRaw,
54+
})=>{
55+
data=isEmptyNil(data) ?'{}' :data
56+
57+
constcurUserRules=getCurUserRules(data,curView,activeRaw)
58+
constselectGeneralRules=R.filter(valueIsNotObj,selectRules)
59+
constselectCommunityRules=R.filter(valueIsObj,selectRules)
60+
61+
constcurAllRules=
62+
curView==='general'
63+
?getJson(allRules.general)
64+
:getJson(allRules.community)
65+
66+
constcurSelectRules=
67+
curView==='general' ?selectGeneralRules :selectCommunityRules[activeRaw]
68+
69+
constcurActiveRules=R.merge(curUserRules,curSelectRules)
70+
construleArray=objToArray(R.merge(curAllRules,curActiveRules))
71+
72+
return(
73+
<Wrapper>
74+
<PermissionWrapper>
75+
<React.Fragment>
76+
{ruleArray.map(p=>(
77+
<PerItemkey={uid.gen()}onClick={onRuleClick.bind(this,p)}>
78+
<PerTitle>{mapKey(p)}</PerTitle>{' '}
79+
<CheckMarkactive={mapValue(p)}/>
80+
</PerItem>
81+
))}
82+
</React.Fragment>
83+
</PermissionWrapper>
84+
</Wrapper>
85+
)
86+
}
87+
88+
exportdefaultPermissionList

‎containers/PermissionEditor/index.js‎

Lines changed: 6 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -6,129 +6,22 @@
66

77
importReactfrom'react'
88
import{inject,observer}from'mobx-react'
9-
importRfrom'ramda'
109
importReactTooltipfrom'react-tooltip'
1110

12-
import{ICON_CMD}from'../../config'
11+
import{UserCell,Button,Space,Icon}from'../../components'
1312

14-
import{
15-
UserCell,
16-
Button,
17-
Space,
18-
Icon,
19-
CommunityMatrix,
20-
}from'../../components'
13+
import{Wrapper,Divider,ActionBtns}from'./styles'
2114

22-
import{
23-
Wrapper,
24-
Divider,
25-
PermissionWrapper,
26-
PerItem,
27-
PerTitle,
28-
CheckIcon,
29-
ActionBtns,
30-
}from'./styles'
15+
importCommunityListfrom'./CommunityList'
16+
importPermissionListfrom'./PermissionList'
3117

32-
import{
33-
uid,
34-
makeDebugger,
35-
storePlug,
36-
isEmptyNil,
37-
isObject,
38-
maybe,
39-
mapKey,
40-
mapValue,
41-
objToArray,
42-
}from'../../utils'
18+
import{makeDebugger,storePlug}from'../../utils'
4319
import*aslogicfrom'./logic'
4420

4521
/* eslint-disable no-unused-vars */
4622
constdebug=makeDebugger('C:PermissionEditor')
4723
/* eslint-enable no-unused-vars */
4824

49-
constvalueIsObj=v=>isObject(v)
50-
constvalueIsNotObj=R.complement(valueIsObj)
51-
52-
constgetManagedCommunitiesRaws=userRules=>{
53-
constuserRulesByCommunities=R.filter(valueIsObj,JSON.parse(userRules))
54-
constckeys=R.keys(userRulesByCommunities)
55-
56-
returnckeys
57-
}
58-
59-
constCommunitiesMatrix=({ data, userRules, activeRaw})=>{
60-
if(!data)return<div/>
61-
userRules=isEmptyNil(userRules) ?'{}' :userRules
62-
63-
constmanagerdRaws=getManagedCommunitiesRaws(userRules)
64-
65-
return(
66-
<CommunityMatrix
67-
data={data}
68-
onSelect={logic.communitySelect}
69-
onAddOnSelect={logic.communityAddOnSelect}
70-
activeRaw={activeRaw}
71-
lens={managerdRaws}
72-
/>
73-
)
74-
}
75-
76-
constCheckMark=({ active})=>{
77-
return<CheckIconsrc={`${ICON_CMD}/check.svg`}active={active}/>
78-
}
79-
80-
constgetJson=value=>{
81-
returnisEmptyNil(value) ?{} :JSON.parse(value)
82-
}
83-
84-
constgetCurUserRules=(data,curView,activeRaw)=>{
85-
constuserPermissions=JSON.parse(data)
86-
constuserRulesByCommunities=R.filter(valueIsObj,userPermissions)
87-
88-
if(curView==='general'){
89-
returnR.pickBy(valueIsNotObj,userPermissions)
90-
}
91-
92-
returnmaybe(userRulesByCommunities[activeRaw],{})
93-
}
94-
95-
constPermissionList=({
96-
data,
97-
allRules,
98-
selectRules,
99-
curView,
100-
activeRaw,
101-
})=>{
102-
data=isEmptyNil(data) ?'{}' :data
103-
104-
constcurUserRules=getCurUserRules(data,curView,activeRaw)
105-
constselectGeneralRules=R.filter(valueIsNotObj,selectRules)
106-
constselectCommunityRules=R.filter(valueIsObj,selectRules)
107-
108-
constcurAllRules=
109-
curView==='general'
110-
?getJson(allRules.general)
111-
:getJson(allRules.community)
112-
113-
constcurSelectRules=
114-
curView==='general' ?selectGeneralRules :selectCommunityRules[activeRaw]
115-
116-
constcurActiveRules=R.merge(curUserRules,curSelectRules)
117-
construleArray=objToArray(R.merge(curAllRules,curActiveRules))
118-
119-
return(
120-
<PermissionWrapper>
121-
<React.Fragment>
122-
{ruleArray.map(p=>(
123-
<PerItemkey={uid.gen()}onClick={logic.onRuleClick.bind(this,p)}>
124-
<PerTitle>{mapKey(p)}</PerTitle><CheckMarkactive={mapValue(p)}/>
125-
</PerItem>
126-
))}
127-
</React.Fragment>
128-
</PermissionWrapper>
129-
)
130-
}
131-
13225
classPermissionEditorContainerextendsReact.Component{
13326
componentWillMount(){
13427
const{ permissionEditor}=this.props
@@ -161,7 +54,7 @@ class PermissionEditorContainer extends React.Component {
16154
<h2>权限编辑</h2>
16255
<Divider/>
16356

164-
<CommunitiesMatrix
57+
<CommunityList
16558
data={pagedCommunitiesData}
16659
userRules={cmsPassportString}
16760
allRules={allRulesData.cms.community}
@@ -182,7 +75,6 @@ class PermissionEditorContainer extends React.Component {
18275
id="permission_editor"
18376
delayShow={1000}
18477
/>
185-
<br/>
18678
<Divider/>
18779
<ActionBtns>
18880
<Buttontype="primary"ghostonClick={logic.onCancle}>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
importstyledfrom'styled-components'
2+
3+
// import Img from '../../../components/Img'
4+
// import { theme } from '../../../utils'
5+
6+
exportconstWrapper=styled.div`
7+
padding: 10px;
8+
`
9+
exportconstHolder=1

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp