MCPcopy
hub / github.com/AstrBotDevs/AstrBot / withLegacyFallback

Function withLegacyFallback

dashboard/src/api/v1.ts:211–239  ·  view source on GitHub ↗
(
  primary: Promise<unknown>,
  legacy: () => Promise<AxiosResponse<ApiEnvelope<T>>>,
)

Source from the content-addressed store, hash-verified

209}
210
211function withLegacyFallback<T>(
212 primary: Promise<unknown>,
213 legacy: () => Promise<AxiosResponse<ApiEnvelope<T>>>,
214): V1Response<T> {
215 const legacyRequest = () =>
216 legacy().then((response) => {
217 const legacyResponse = response as AxiosResponse<ApiEnvelope<T>> & {
218 legacyFallback?: boolean;
219 };
220 legacyResponse.legacyFallback = true;
221 return legacyResponse;
222 });
223
224 return typed<T>(primary).then((response) => {
225 const message = response.data?.message || '';
226 if (
227 response.data?.status === 'error' &&
228 message.toLowerCase().includes('missing api key')
229 ) {
230 return legacyRequest();
231 }
232 return response;
233 }).catch((error) => {
234 if (isLegacyFallbackError(error)) {
235 return legacyRequest();
236 }
237 throw error;
238 });
239}
240
241function firstSuccessfulResponse<T>(
242 requests: Array<Promise<AxiosResponse<ApiEnvelope<T>>>>,

Callers 15

loginFunction · 0.85
logoutFunction · 0.85
setupStatusFunction · 0.85
setupFunction · 0.85
setupTotpFunction · 0.85
recoverTotpFunction · 0.85
updateAccountFunction · 0.85
checkFunction · 0.85
releasesFunction · 0.85
coreFunction · 0.85
dashboardFunction · 0.85
progressFunction · 0.85

Calls 3

typedFunction · 0.85
legacyRequestFunction · 0.85
isLegacyFallbackErrorFunction · 0.85

Tested by

no test coverage detected