Skip to content

Commit d250f31

Browse files
Merge pull request #36 from SundeepChand/refactor-newstory
Refactor GraphQL queries
2 parents 488a026 + 5092626 commit d250f31

File tree

11 files changed

+260
-321
lines changed

11 files changed

+260
-321
lines changed

src/components/UsersSuggestionDropdown.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const UsersSuggestionDropdown = ({
88
isOpen,
99
userTerm,
1010
setUserTerm,
11-
setUserQuery,
11+
setAuthorQuery,
1212
setUsersSuggestionOpen
1313
}) => {
1414
const [usersToSuggest, setUsersToSuggest] = useState([])
@@ -90,7 +90,7 @@ const UsersSuggestionDropdown = ({
9090
key={user.id}
9191
onClick={() => {
9292
setUserTerm(user.username)
93-
setUserQuery(user.username)
93+
setAuthorQuery(user.username)
9494
setUsersSuggestionOpen(false)
9595
}}
9696
className='user-data'

src/pages/Home.js

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ const Home = () => {
7676

7777
const [userTerm, setUserTerm] = useState('')
7878

79-
const [userQuery, setUserQuery] = useState('')
79+
const [authorQuery, setAuthorQuery] = useState('')
8080

8181
const getPage = useCallback((page) => {
8282
setPage(page)
@@ -97,7 +97,7 @@ const Home = () => {
9797
setSearchQuery('')
9898
}
9999
if (userTerm === '') {
100-
setUserQuery('')
100+
setAuthorQuery('')
101101
}
102102
}, [product, category, searchTerm, userTerm])
103103

@@ -106,7 +106,7 @@ const Home = () => {
106106
const response = await userStory.getStories(
107107
page,
108108
currentStateSelected,
109-
userQuery,
109+
authorQuery,
110110
categoryQuery,
111111
productQuery,
112112
searchQuery
@@ -120,21 +120,29 @@ const Home = () => {
120120
page,
121121
productQuery,
122122
searchQuery,
123-
userQuery
123+
authorQuery
124124
])
125125

126126
useEffect(() => {
127127
const fetchStoryCount = async () => {
128128
const response = await userStory.getStoryCount(
129129
currentStateSelected,
130-
userQuery,
130+
authorQuery,
131+
categoryQuery,
131132
productQuery,
132133
searchQuery
133134
)
134135
setStoryCount(response.data.data.userStoriesConnection.aggregate.count)
135136
}
136137
fetchStoryCount()
137-
}, [currentStateSelected, product, productQuery, searchQuery, userQuery])
138+
}, [
139+
currentStateSelected,
140+
product,
141+
categoryQuery,
142+
productQuery,
143+
searchQuery,
144+
authorQuery
145+
])
138146

139147
useEffect(() => {
140148
const fetchProducts = async () => {
@@ -223,6 +231,15 @@ const Home = () => {
223231
setModal(false)
224232
}
225233

234+
const handleSearchSubmit = () => {
235+
if (fieldToSearch === 'Title' && searchTerm.length > 0) {
236+
setSearchQuery(`Title_contains: "${searchTerm}"`)
237+
} else if (userTerm.length > 0) {
238+
setAuthorQuery(userTerm)
239+
setUsersSuggestionOpen(false)
240+
}
241+
}
242+
226243
return (
227244
<>
228245
<Helmet>
@@ -291,7 +308,7 @@ const Home = () => {
291308
isOpen={usersSuggestionOpen}
292309
userTerm={userTerm}
293310
setUserTerm={setUserTerm}
294-
setUserQuery={setUserQuery}
311+
setAuthorQuery={setAuthorQuery}
295312
setUsersSuggestionOpen={setUsersSuggestionOpen}
296313
/>
297314
}
@@ -311,12 +328,7 @@ const Home = () => {
311328
}}
312329
onKeyDown={(event) => {
313330
if (event.key === 'Enter') {
314-
if (fieldToSearch === 'Title' && searchTerm.length > 0) {
315-
setSearchQuery(`Title_contains: "${searchTerm}"`)
316-
} else if (userTerm.length > 0) {
317-
setUserQuery(userTerm)
318-
setUsersSuggestionOpen(false)
319-
}
331+
handleSearchSubmit()
320332
}
321333
}}
322334
onFocus={() => {
@@ -353,13 +365,7 @@ const Home = () => {
353365
<Button
354366
type='submit'
355367
className='btn btn-default'
356-
onClick={() => {
357-
if (fieldToSearch === 'Title' && searchTerm.length > 0) {
358-
setSearchQuery(`Title_contains: "${searchTerm}"`)
359-
} else if (userTerm.length > 0) {
360-
setUserQuery(userTerm)
361-
}
362-
}}
368+
onClick={handleSearchSubmit}
363369
>
364370
Search
365371
</Button>

src/pages/MyProfile.js

Lines changed: 3 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
import React, { useEffect, useState, useContext } from 'react'
2-
import axios from 'axios'
3-
import { apiURL } from '../config.json'
42
import { trackPromise, usePromiseTracker } from 'react-promise-tracker'
53
import LoadingIndicator from '../modules/LoadingIndicator'
64
import { Helmet } from 'react-helmet'
@@ -9,6 +7,7 @@ import Navigation from '../components/Navigation'
97
import Context from '../modules/Context'
108
import Login from './Login'
119
import UserProfile from '../components/UserProfile'
10+
import userStory from '../services/user_story'
1211

1312
const MyProfile = () => {
1413
const userId = localStorage.getItem('id')
@@ -29,65 +28,15 @@ const MyProfile = () => {
2928
}
3029

3130
const updateProfile = async () => {
32-
const response = await axios.post(
33-
`${apiURL}/graphql`,
34-
{
35-
query: `mutation {
36-
updateUser(input: {
37-
where: {
38-
id: "${userId}"
39-
}
40-
data: {
41-
Name: "${user.Name ?? user.username}"
42-
Profession: "${user.Profession ?? ''}"
43-
Company: "${user.Company ?? ''}"
44-
LinkedIn: "${user.LinkedIn ?? ''}"
45-
Twitter: "${user.Twitter ?? ''}"
46-
Bio: "${user.Bio ?? ''}"
47-
}
48-
}) {
49-
user {
50-
username
51-
}
52-
}
53-
}`
54-
},
55-
{
56-
withCredentials: true
57-
}
58-
)
31+
const response = await userStory.updateUser({ id: userId, ...user })
5932
if (response) {
6033
setUpdated(true)
6134
}
6235
}
6336

6437
useEffect(() => {
6538
const fetchUserInfo = async () => {
66-
const response = await axios.post(
67-
`${apiURL}/graphql`,
68-
{
69-
query: `query {
70-
user(id: "${userId}") {
71-
profilePicture {
72-
id
73-
url
74-
}
75-
Name
76-
Bio
77-
username
78-
Company
79-
Profession
80-
email
81-
LinkedIn
82-
Twitter
83-
}
84-
}
85-
`
86-
},
87-
{
88-
withCredentials: true
89-
}
90-
)
39+
const response = await userStory.getUserDetails(userId)
9140
setUser(response.data.data.user)
9241
}
9342
if (userId) {

src/pages/MyStories.js

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import Lists from '../utils/Lists'
1515
import Context from '../modules/Context'
1616
import Login from './Login'
1717

18+
import userStory from '../services/user_story'
19+
1820
const MyStories = () => {
1921
const { state } = useContext(Context)
2022

@@ -139,19 +141,7 @@ const MyStories = () => {
139141

140142
useEffect(() => {
141143
const fetchProducts = async () => {
142-
const response = await axios.post(
143-
`${apiURL}/graphql`,
144-
{
145-
query: `query {
146-
products {
147-
Name
148-
}
149-
}`
150-
},
151-
{
152-
withCredentials: true
153-
}
154-
)
144+
const response = await userStory.getProducts()
155145
setProducts(
156146
response.data.data.products.map((ele) => {
157147
return ele.Name
@@ -164,9 +154,7 @@ const MyStories = () => {
164154

165155
useEffect(() => {
166156
const fetchCategories = async () => {
167-
const response = await axios.post(`${apiURL}/graphql`, {
168-
query: '{ __type(name: "ENUM_USERSTORY_CATEGORY") {enumValues {name}}}'
169-
})
157+
const response = await userStory.getCategories()
170158

171159
setCategories(
172160
response.data.data.__type.enumValues.map((ele) => {

src/pages/NewStory.js

Lines changed: 7 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ import { useForm } from 'react-hook-form'
33

44
import MarkdownEditor from '../components/MarkdownEditor'
55
import { filterDescriptionText } from '../utils/filterText'
6-
import axios from 'axios'
7-
import { apiURL } from '../config.json'
86
import { trackPromise, usePromiseTracker } from 'react-promise-tracker'
97
import { Helmet } from 'react-helmet'
108

@@ -18,6 +16,8 @@ import { navigate } from '@reach/router'
1816
import Context from '../modules/Context'
1917
import Login from './Login'
2018

19+
import userStory from '../services/user_story'
20+
2121
const initialDescriptionInputsValue = {
2222
None: ''
2323
}
@@ -60,9 +60,7 @@ const NewStory = () => {
6060

6161
useEffect(() => {
6262
const fetchCategories = async () => {
63-
const response = await axios.post(`${apiURL}/graphql`, {
64-
query: '{ __type(name: "ENUM_USERSTORY_CATEGORY") {enumValues {name}}}'
65-
})
63+
const response = await userStory.getCategories()
6664

6765
setCategories(
6866
response.data.data.__type.enumValues.map((ele) => {
@@ -74,21 +72,7 @@ const NewStory = () => {
7472
trackPromise(fetchCategories())
7573

7674
const fetchProducts = async () => {
77-
const response = await axios.post(
78-
`${apiURL}/graphql`,
79-
{
80-
query: `query {
81-
products {
82-
id
83-
Name
84-
product_template
85-
}
86-
}`
87-
},
88-
{
89-
withCredentials: true
90-
}
91-
)
75+
const response = await userStory.getProductsWithTemplates()
9276
const { products } = response.data.data
9377
setProducts(products)
9478
const productToTemplateTextMap = {}
@@ -104,15 +88,7 @@ const NewStory = () => {
10488
trackPromise(fetchProducts())
10589

10690
const fetchPriorities = async () => {
107-
const response = await axios.post(`${apiURL}/graphql`, {
108-
query: `query {
109-
__type(name: "ENUM_USERSTORY_PRIORITY") {
110-
enumValues {
111-
name
112-
}
113-
}
114-
}`
115-
})
91+
const response = await userStory.getPriorities()
11692

11793
setPriorities(
11894
response.data.data.__type.enumValues.map((ele) => {
@@ -124,24 +100,7 @@ const NewStory = () => {
124100
trackPromise(fetchPriorities())
125101

126102
const fetchStoriesData = async () => {
127-
const response = await axios.post(
128-
`${apiURL}/graphql`,
129-
{
130-
query: `query {
131-
userStories(sort: "votes:desc,createdAt:desc") {
132-
id
133-
Title
134-
Description
135-
followers {
136-
username
137-
}
138-
}
139-
}`
140-
},
141-
{
142-
withCredentials: true
143-
}
144-
)
103+
const response = await userStory.getAllStories()
145104
setStoriesData(response.data.data.userStories)
146105
}
147106
fetchStoriesData()
@@ -165,30 +124,7 @@ const NewStory = () => {
165124
return
166125
}
167126
data.description = filterDescriptionText(description)
168-
await axios.post(
169-
`${apiURL}/graphql`,
170-
{
171-
query: `mutation {
172-
createUserStory(
173-
input: {
174-
data: {
175-
Description: "${data.description}"
176-
Title: "${data.title}"
177-
Category: ${data.category}
178-
product: "${data.product}"
179-
Priority: ${data.priority}
180-
}
181-
}
182-
) {
183-
userStory {
184-
createdAt
185-
}
186-
}
187-
}
188-
`
189-
},
190-
{ withCredentials: true }
191-
)
127+
await userStory.createStory(data)
192128
navigate('/')
193129
}
194130

0 commit comments

Comments
 (0)