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

Commit021e4cd

Browse files
refactor: Load users from the API (#1218)
1 parent69e26c4 commit021e4cd

File tree

9 files changed

+22
-49
lines changed

9 files changed

+22
-49
lines changed

‎site/src/api/index.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
importaxios,{AxiosRequestHeaders}from"axios"
22
import{mutate}from"swr"
3-
import{MockPager,MockUser,MockUser2}from"../testHelpers/entities"
43
import*asTypesfrom"./types"
54
import*asTypesGenfrom"./typesGenerated"
65

@@ -76,13 +75,9 @@ export const getApiKey = async (): Promise<Types.APIKeyResponse> => {
7675
returnresponse.data
7776
}
7877

79-
exportconstgetUsers=async():Promise<Types.PagedUsers>=>{
80-
// const response = await axios.get<Types.UserResponse[]>("/api/v2/users")
81-
// return response.data
82-
returnPromise.resolve({
83-
page:[MockUser,MockUser2],
84-
pager:MockPager,
85-
})
78+
exportconstgetUsers=async():Promise<TypesGen.User[]>=>{
79+
constresponse=awaitaxios.get<TypesGen.User[]>("/api/v2/users?offset=0&limit=1000")
80+
returnresponse.data
8681
}
8782

8883
exportconstcreateUser=async(user:Types.CreateUserRequest):Promise<TypesGen.User>=>{

‎site/src/api/types.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -88,15 +88,6 @@ export interface UserAgent {
8888
readonlyos:string
8989
}
9090

91-
exportinterfacePager{
92-
total:number
93-
}
94-
95-
exportinterfacePagedUsers{
96-
page:UserResponse[]
97-
pager:Pager
98-
}
99-
10091
exportinterfaceWorkspaceAutostartRequest{
10192
schedule:string
10293
}

‎site/src/pages/UsersPage/UsersPage.test.tsx

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
11
import{screen}from"@testing-library/react"
22
importReactfrom"react"
3-
import{MockPager,render}from"../../testHelpers"
3+
import{render}from"../../testHelpers"
44
import{UsersPage}from"./UsersPage"
5-
import{Language}from"./UsersPageView"
65

76
describe("Users Page",()=>{
8-
it("has a header with the total number of users",async()=>{
9-
render(<UsersPage/>)
10-
consttotal=awaitscreen.findByText(/\d+total/)
11-
expect(total.innerHTML).toEqual(Language.pageSubtitle(MockPager))
12-
})
137
it("shows users",async()=>{
148
render(<UsersPage/>)
159
constusers=awaitscreen.findAllByText(/.*@coder.com/)

‎site/src/pages/UsersPage/UsersPage.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ import { useActor } from "@xstate/react"
22
importReact,{useContext,useEffect}from"react"
33
import{useNavigate}from"react-router"
44
import{ErrorSummary}from"../../components/ErrorSummary/ErrorSummary"
5+
import{FullScreenLoader}from"../../components/Loader/FullScreenLoader"
56
import{XServiceContext}from"../../xServices/StateContext"
67
import{UsersPageView}from"./UsersPageView"
78

89
exportconstUsersPage:React.FC=()=>{
910
constxServices=useContext(XServiceContext)
1011
const[usersState,usersSend]=useActor(xServices.usersXService)
11-
const{ users,pager,getUsersError}=usersState.context
12+
const{ users, getUsersError}=usersState.context
1213
constnavigate=useNavigate()
1314

1415
/**
@@ -20,11 +21,14 @@ export const UsersPage: React.FC = () => {
2021

2122
if(usersState.matches("error")){
2223
return<ErrorSummaryerror={getUsersError}/>
24+
}
25+
26+
if(!users){
27+
return<FullScreenLoader/>
2328
}else{
2429
return(
2530
<UsersPageView
2631
users={users}
27-
pager={pager}
2832
openUserCreationDialog={()=>{
2933
navigate("/users/create")
3034
}}

‎site/src/pages/UsersPage/UsersPageView.stories.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import{ComponentMeta,Story}from"@storybook/react"
22
importReactfrom"react"
3-
import{MockPager,MockUser,MockUser2}from"../../testHelpers"
3+
import{MockUser,MockUser2}from"../../testHelpers"
44
import{UsersPageView,UsersPageViewProps}from"./UsersPageView"
55

66
exportdefault{
@@ -13,7 +13,6 @@ const Template: Story<UsersPageViewProps> = (args) => <UsersPageView {...args} /
1313
exportconstReady=Template.bind({})
1414
Ready.args={
1515
users:[MockUser,MockUser2],
16-
pager:MockPager,
1716
}
1817
exportconstEmpty=Template.bind({})
1918
Empty.args={

‎site/src/pages/UsersPage/UsersPageView.tsx

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,29 @@
1+
importPaperfrom"@material-ui/core/Paper"
12
import{makeStyles}from"@material-ui/core/styles"
23
importReactfrom"react"
3-
import{Pager,UserResponse}from"../../api/types"
4+
import{UserResponse}from"../../api/types"
45
import{Header}from"../../components/Header/Header"
56
import{UsersTable}from"../../components/UsersTable/UsersTable"
67

78
exportconstLanguage={
89
pageTitle:"Users",
9-
pageSubtitle:(pager:Pager|undefined):string=>(pager ?`${pager.total} total` :""),
1010
newUserButton:"New User",
1111
}
1212

1313
exportinterfaceUsersPageViewProps{
1414
users:UserResponse[]
15-
pager?:Pager
1615
openUserCreationDialog:()=>void
1716
}
1817

19-
exportconstUsersPageView:React.FC<UsersPageViewProps>=({ users,pager,openUserCreationDialog})=>{
18+
exportconstUsersPageView:React.FC<UsersPageViewProps>=({ users, openUserCreationDialog})=>{
2019
conststyles=useStyles()
2120

2221
return(
2322
<divclassName={styles.flexColumn}>
24-
<Header
25-
title={Language.pageTitle}
26-
subTitle={Language.pageSubtitle(pager)}
27-
action={{text:Language.newUserButton,onClick:openUserCreationDialog}}
28-
/>
29-
<UsersTableusers={users}/>
23+
<Headertitle={Language.pageTitle}action={{text:Language.newUserButton,onClick:openUserCreationDialog}}/>
24+
<Paperstyle={{maxWidth:"1380px",margin:"1em auto",width:"100%"}}>
25+
<UsersTableusers={users}/>
26+
</Paper>
3027
</div>
3128
)
3229
}

‎site/src/testHelpers/entities.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import{
22
BuildInfoResponse,
33
Organization,
4-
Pager,
54
Provisioner,
65
Template,
76
UserAgent,
@@ -38,10 +37,6 @@ export const MockUser2: UserResponse = {
3837
organization_ids:["fc0774ce-cc9e-48d4-80ae-88f7a4d4a8b0"],
3938
}
4039

41-
exportconstMockPager:Pager={
42-
total:2,
43-
}
44-
4540
exportconstMockOrganization:Organization={
4641
id:"test-org",
4742
name:"Test Organization",

‎site/src/testHelpers/handlers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export const handlers = [
2222

2323
// users
2424
rest.get("/api/v2/users",async(req,res,ctx)=>{
25-
returnres(ctx.status(200),ctx.json({page:[M.MockUser,M.MockUser2],pager:M.MockPager}))
25+
returnres(ctx.status(200),ctx.json([M.MockUser,M.MockUser2]))
2626
}),
2727
rest.post("/api/v2/users",async(req,res,ctx)=>{
2828
returnres(ctx.status(200),ctx.json(M.MockUser))

‎site/src/xServices/users/usersXService.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ export const Language = {
1010
}
1111

1212
exportinterfaceUsersContext{
13-
users:Types.UserResponse[]
14-
pager?:Types.Pager
13+
users?:TypesGen.User[]
1514
getUsersError?:Error|unknown
1615
createUserError?:Error|unknown
1716
createUserFormErrors?:FieldErrors
@@ -27,7 +26,7 @@ export const usersMachine = createMachine(
2726
events:{}asUsersEvent,
2827
services:{}as{
2928
getUsers:{
30-
data:Types.PagedUsers
29+
data:TypesGen.User[]
3130
}
3231
createUser:{
3332
data:TypesGen.User
@@ -104,8 +103,7 @@ export const usersMachine = createMachine(
104103
},
105104
actions:{
106105
assignUsers:assign({
107-
users:(_,event)=>event.data.page,
108-
pager:(_,event)=>event.data.pager,
106+
users:(_,event)=>event.data,
109107
}),
110108
assignGetUsersError:assign({
111109
getUsersError:(_,event)=>event.data,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp