chore: split axios request options into platform (#3927)

Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
This commit is contained in:
Akash K
2024-03-22 13:42:41 +05:30
committed by GitHub
parent c89c2a5f5c
commit d19807b212
3 changed files with 21 additions and 3 deletions

View File

@@ -15,6 +15,7 @@ import { TeamRequest } from "./TeamRequest"
import { Service } from "dioc" import { Service } from "dioc"
import axios from "axios" import axios from "axios"
import { Ref } from "vue" import { Ref } from "vue"
import { platform } from "~/platform"
type CollectionSearchMeta = { type CollectionSearchMeta = {
isSearchResult?: boolean isSearchResult?: boolean
@@ -199,6 +200,8 @@ export class TeamSearchService extends Service {
this.searchResultsRequests = {} this.searchResultsRequests = {}
this.expandedCollections.value = [] this.expandedCollections.value = []
const axiosPlatformConfig = platform.auth.axiosPlatformConfig?.() ?? {}
try { try {
const searchResponse = await axios.get( const searchResponse = await axios.get(
`${ `${
@@ -206,9 +209,7 @@ export class TeamSearchService extends Service {
}/team-collection/search/${teamID}?searchQuery=${encodeURIComponent( }/team-collection/search/${teamID}?searchQuery=${encodeURIComponent(
query query
)}`, )}`,
{ axiosPlatformConfig
withCredentials: true,
}
) )
if (searchResponse.status !== 200) { if (searchResponse.status !== 200) {

View File

@@ -3,6 +3,7 @@ import { Observable } from "rxjs"
import { Component } from "vue" import { Component } from "vue"
import { getI18n } from "~/modules/i18n" import { getI18n } from "~/modules/i18n"
import * as E from "fp-ts/Either" import * as E from "fp-ts/Either"
import { AxiosRequestConfig } from "axios"
/** /**
* A common (and required) set of fields that describe a user. * A common (and required) set of fields that describe a user.
@@ -135,6 +136,15 @@ export type AuthPlatformDef = {
*/ */
getGQLClientOptions?: () => Partial<ClientOptions> getGQLClientOptions?: () => Partial<ClientOptions>
/**
* called by the platform to provide additional/different config options when
* sending requests with axios
* eg: SH needs to include cookies in the request, while Central doesn't and throws a cors error if it does
*
* @returns AxiosRequestConfig
*/
axiosPlatformConfig?: () => AxiosRequestConfig
/** /**
* Returns the string content that should be returned when the user selects to * Returns the string content that should be returned when the user selects to
* copy auth token from Developer Options. * copy auth token from Developer Options.

View File

@@ -211,6 +211,13 @@ export const def: AuthPlatformDef = {
} }
}, },
axiosPlatformConfig() {
return {
// for including cookies in the request
withCredentials: true,
}
},
/** /**
* it is not possible for us to know if the current cookie is expired because we cannot access http-only cookies from js * it is not possible for us to know if the current cookie is expired because we cannot access http-only cookies from js
* hence just returning if the currentUser$ has a value associated with it * hence just returning if the currentUser$ has a value associated with it