Skip to content

Commit 2fc417f

Browse files
committed
check for access tokens before making request or webhook related api calls. 14k related sentry errors for "No access token provided."
1 parent 4ac21dc commit 2fc417f

File tree

2 files changed

+22
-14
lines changed

2 files changed

+22
-14
lines changed

utils/api/requests.js

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { fetcher, posting, updating } from './base'
1212

1313
/** GET METHODS */
1414
export const useAllRequests = (accessToken) => {
15-
const { data, error } = useSWR([`/quote_groups/mine.json`, accessToken])
15+
const { data, error } = useSWR(accessToken ? [`/quote_groups/mine.json`, accessToken] : null)
1616
const requests = data && configureRequests({ data: data.quote_group_refs, path: '/requests' })
1717

1818
return {
@@ -23,7 +23,7 @@ export const useAllRequests = (accessToken) => {
2323
}
2424

2525
export const useOneRequest = (uuid, accessToken) => {
26-
const { data, error } = useSWR(uuid ? [`/quote_groups/${uuid}.json`, accessToken] : null)
26+
const { data, error } = useSWR(accessToken ? [`/quote_groups/${uuid}.json`, accessToken] : null)
2727
let request = data && configureRequests({ data, path: '/requests' })[0]
2828
if (request) {
2929
request = {
@@ -43,7 +43,7 @@ export const useOneRequest = (uuid, accessToken) => {
4343
}
4444

4545
export const useAllSOWs = (id, requestIdentifier, accessToken) => {
46-
const { data, error } = useSWR(id ? [`/quote_groups/${id}/proposals.json`, accessToken] : null)
46+
const { data, error } = useSWR(accessToken ? [`/quote_groups/${id}/proposals.json`, accessToken] : null)
4747
let allSOWs
4848
if (data) {
4949
allSOWs = configureSOWs(data, requestIdentifier)
@@ -62,7 +62,8 @@ export const getAllPOs = async (quotedWareId, uuid, requestIdentifier, accessTok
6262
// TODO(summer-cook): eventually we can use the useSWRList hook here instead of mapping & calling the fetcher.
6363
// This hook is actively being contributed to the swr repo, but the semantics of the work are still being debated.
6464
// See https://github.com/vercel/swr/discussions/1988 for the RFC and https://github.com/vercel/swr/pull/2047 for the PR.
65-
const data = await fetcher(`quote_groups/${uuid}/quoted_wares/${quotedWareId}/purchase_orders.json`, accessToken)
65+
const url = () => accessToken ? `quote_groups/${uuid}/quoted_wares/${quotedWareId}/purchase_orders.json` : null
66+
const data = await fetcher(url(), accessToken)
6667
const configuredPOs = data?.map(async (po) => {
6768
const purchaseOrder = await fetcher(`quote_groups/${uuid}/quoted_wares/${quotedWareId}/purchase_orders/${po.id}.json`, accessToken)
6869
return configurePO(purchaseOrder, requestIdentifier)
@@ -84,7 +85,7 @@ export const getAllPOs = async (quotedWareId, uuid, requestIdentifier, accessTok
8485
}
8586

8687
export const useMessages = (requestUuid, accessToken) => {
87-
const { data, error, mutate } = useSWR(requestUuid ? [`/quote_groups/${requestUuid}/messages.json`, accessToken] : null)
88+
const { data, error, mutate } = useSWR(accessToken ? [`/quote_groups/${requestUuid}/messages.json`, accessToken] : null)
8889
let messages
8990
if (data) {
9091
messages = configureMessages(data.messages)
@@ -100,7 +101,7 @@ export const useMessages = (requestUuid, accessToken) => {
100101
}
101102

102103
export const useFiles = (id, accessToken) => {
103-
const { data, error, mutate } = useSWR(id ? [`/quote_groups/${id}/notes.json`, accessToken] : null)
104+
const { data, error, mutate } = useSWR(accessToken ? [`/quote_groups/${id}/notes.json`, accessToken] : null)
104105
let files
105106
if (data) {
106107
files = configureFiles(data.notes)
@@ -117,7 +118,7 @@ export const useFiles = (id, accessToken) => {
117118

118119

119120
export const useInitializeRequest = (id, accessToken) => {
120-
const { data, error } = useSWR(id ? [`/wares/${id}/quote_groups/new.json`, accessToken] : null)
121+
const { data, error } = useSWR(accessToken ? [`/wares/${id}/quote_groups/new.json`, accessToken] : null)
121122
let dynamicForm = { name: data?.name }
122123
let dynamicFormInfo = data?.dynamic_forms[0]
123124

@@ -141,7 +142,7 @@ export const useInitializeRequest = (id, accessToken) => {
141142
}
142143

143144
export const useDefaultWare = (accessToken) => {
144-
const { data, error } = useSWR([`/wares.json`, accessToken])
145+
const { data, error } = useSWR(accessToken ? [`/wares.json`, accessToken] : null)
145146
const defaultWare = data?.ware_refs?.find(item => item.slug === 'make-a-request')
146147

147148
return {
@@ -169,7 +170,8 @@ export const createMessageOrFile = ({ id, quotedWareID, message, files, accessTo
169170
}
170171
/* eslint-enable camelcase */
171172

172-
return posting(`/quote_groups/${id}/notes.json`, note, accessToken)
173+
const url = () => accessToken ? `/quote_groups/${id}/notes.json` : null
174+
return posting(url(), note, accessToken)
173175
}
174176

175177
const requestData = ({request, shipping, billing}) => {
@@ -234,7 +236,8 @@ export const createRequest = async ({ dynamicFormData, wareID, accessToken }) =>
234236
timeline: requestTimeline,
235237
}
236238

237-
let { data, error } = await posting(`/wares/${wareID}/quote_groups.json`, { pg_quote_group }, accessToken)
239+
const url = () => accessToken ? `/wares/${wareID}/quote_groups.json` : null
240+
let { data, error } = await posting(url(), { pg_quote_group }, accessToken)
238241

239242
if (data && dynamicFormData.attachments) {
240243
/**
@@ -245,6 +248,7 @@ export const createRequest = async ({ dynamicFormData, wareID, accessToken }) =>
245248
let quotedWareID = data.quoted_ware_refs?.[0]?.id
246249
if (!quotedWareID) {
247250
// we have to explicity use fetcher because "useOneRequest" is a hook
251+
const url = () => accessToken ? `quote_groups/${uuid}/quoted_wares/${quotedWareId}/purchase_orders.json` : null
248252
const res = await fetcher(`/quote_groups/${data.id}.json`, accessToken)
249253
quotedWareID = res.quoted_ware_refs?.[0]?.id
250254
}
@@ -285,13 +289,15 @@ export const acceptSOWandCreatePO = (request, sow, accessToken) => {
285289
po_number: `PO${sow.identifier}`,
286290
}
287291

288-
return posting(`/quote_groups/${request.id}/accept_sow.json`, { pg_quote_group }, accessToken)
292+
const url = () => accessToken ? `/quote_groups/${request.id}/accept_sow.json` : null
293+
return posting(url(), { pg_quote_group }, accessToken)
289294
/* eslint-enable camelcase */
290295
}
291296

292297
/** PUT METHODS */
293298
export const sendRequestToVendor = async (requestID, accessToken) => {
294-
const { data, error } = await updating(`/quote_groups/${requestID}/send_to_vendors.json`, {}, accessToken)
299+
const url = () => accessToken ? `/quote_groups/${requestID}/send_to_vendors.json` : null
300+
const { data, error } = await updating(url(), {}, accessToken)
295301

296302
return { data, error }
297303
}

utils/api/webhooks.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import { WEBHOOK_EVENTS } from '../constants'
44
export const getWebhookConfig = async (accessToken) => {
55
// TODO(alishaevn): update the url to "webhook_config/user.json" when
66
// https://github.com/assaydepot/scientist_api_v2/pull/237 is available on api prod
7-
return fetcher('/webhook_config.json', accessToken)
7+
const url = () => accessToken ? '/webhook_config.json' : null
8+
return fetcher(url(), accessToken)
89
}
910

1011
export const createWebhookConfig = (accessToken) => {
@@ -25,5 +26,6 @@ export const createWebhookConfig = (accessToken) => {
2526

2627
// TODO(alishaevn): update the url to "webhook_config/user.json" when
2728
// https://github.com/assaydepot/scientist_api_v2/pull/237 is available on api prod
28-
updating('/webhook_config.json', webhook_config, accessToken)
29+
const url = () => accessToken ? '/webhook_config.json' : null
30+
updating(url(), webhook_config, accessToken)
2931
}

0 commit comments

Comments
 (0)