{"record":{"id":"2212e498b08eafee","repo":"lyswhut/lx-music-desktop","slug":"toggle-source-failed","errorCode":null,"errorMessage":"toggle_source_failed","messagePattern":"toggle_source_failed","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"src/renderer/core/music/utils.ts","lineNumber":265,"sourceCode":"  isFromCache: boolean\n}> => {\n  if (!await window.lx.apiInitPromise[0]) throw new Error('source init failed')\n\n  let musicInfo: LX.Music.MusicInfoOnline | null = null\n  let itemQuality: LX.Quality | null = null\n  // eslint-disable-next-line no-cond-assign\n  while (musicInfo = (musicInfos.shift()!)) {\n    if (retryedSource.includes(musicInfo.source)) continue\n    retryedSource.push(musicInfo.source)\n    if (!assertApiSupport(musicInfo.source)) continue\n    itemQuality = quality ?? getPlayQuality(appSetting['player.playQuality'], musicInfo)\n    if (!musicInfo.meta._qualitys[itemQuality]) continue\n\n    console.log('try toggle to: ', musicInfo.source, musicInfo.name, musicInfo.singer, musicInfo.interval)\n    onToggleSource(musicInfo)\n    break\n  }\n  if (!musicInfo || !itemQuality) throw new Error(window.i18n.t('toggle_source_failed'))\n\n  const cachedUrl = await getStoreMusicUrl(musicInfo, itemQuality)\n  if (cachedUrl && !isRefresh) return { url: cachedUrl, musicInfo, quality: itemQuality, isFromCache: true }\n\n  let reqPromise\n  try {\n    reqPromise = musicSdk[musicInfo.source].getMusicUrl(toOldMusicInfo(musicInfo), itemQuality).promise\n  } catch (err: any) {\n    reqPromise = Promise.reject(err)\n  }\n  // retryedSource.includes(musicInfo.source)\n  // eslint-disable-next-line @typescript-eslint/promise-function-async\n  return reqPromise.then(({ url, type }: { url: string, type: LX.Quality }) => {\n    return { musicInfo, url, quality: type, isFromCache: false }\n    // eslint-disable-next-line @typescript-eslint/promise-function-async\n  }).catch((err: any) => {\n    if (err.message == requestMsg.tooManyRequests) throw err\n    console.log(err)","sourceCodeStart":247,"sourceCodeEnd":283,"githubUrl":"https://github.com/lyswhut/lx-music-desktop/blob/9c364b482e5621a1d38b50e8610d2fb974457e6e/src/renderer/core/music/utils.ts#L247-L283","documentation":"Error \"toggle_source_failed\" thrown in lyswhut/lx-music-desktop.","triggerScenarios":"Thrown at src/renderer/core/music/utils.ts:265 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"9c364b482e5621a1d38b50e8610d2fb974457e6e","analyzedAt":"2026-08-12T15:14:48.244Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}