( context: vscode.ExtensionContext )
| 756 | } |
| 757 | |
| 758 | async function getWorkspacesForSidebar( |
| 759 | context: vscode.ExtensionContext |
| 760 | ): Promise<{ workspaces: WorkspaceWithContext[]; status: UiConnectionStatus }> { |
| 761 | assert(context, "getWorkspacesForSidebar requires context"); |
| 762 | |
| 763 | const modeSetting: ConnectionMode = getConnectionModeSetting(); |
| 764 | muxLogDebug("mux: getWorkspacesForSidebar", { modeSetting }); |
| 765 | |
| 766 | const tryReadFromFiles = async (): Promise< |
| 767 | { workspaces: WorkspaceWithContext[] } | { error: string } |
| 768 | > => { |
| 769 | try { |
| 770 | return { workspaces: await getAllWorkspacesFromFiles() }; |
| 771 | } catch (error) { |
| 772 | return { error: formatError(error) }; |
| 773 | } |
| 774 | }; |
| 775 | |
| 776 | if (modeSetting === "file-only") { |
| 777 | const fileResult = await tryReadFromFiles(); |
| 778 | if ("error" in fileResult) { |
| 779 | return { |
| 780 | workspaces: [], |
| 781 | status: { |
| 782 | mode: "file", |
| 783 | error: `Failed to read mux workspaces from local files. (${fileResult.error})`, |
| 784 | }, |
| 785 | }; |
| 786 | } |
| 787 | |
| 788 | return { workspaces: fileResult.workspaces, status: { mode: "file" } }; |
| 789 | } |
| 790 | |
| 791 | const api = await tryGetApiClient(context); |
| 792 | if ("failure" in api) { |
| 793 | const failure = api.failure; |
| 794 | |
| 795 | if (modeSetting === "server-only") { |
| 796 | return { |
| 797 | workspaces: [], |
| 798 | status: { |
| 799 | mode: "file", |
| 800 | baseUrl: failure.baseUrl, |
| 801 | error: `${describeFailure(failure)}. (${failure.error})`, |
| 802 | }, |
| 803 | }; |
| 804 | } |
| 805 | |
| 806 | const fileResult = await tryReadFromFiles(); |
| 807 | if ("error" in fileResult) { |
| 808 | return { |
| 809 | workspaces: [], |
| 810 | status: { |
| 811 | mode: "file", |
| 812 | baseUrl: failure.baseUrl, |
| 813 | error: `${describeFailure(failure)}. ${getWarningSuffix(failure)} (${failure.error}). Additionally, reading local workspaces failed. (${fileResult.error})`, |
| 814 | }, |
| 815 | }; |
no test coverage detected