feat: connect alpine workspace management to admin api

This commit is contained in:
a.tolmachev
2026-03-30 23:03:25 +03:00
parent 0cec8cc826
commit 91854a4153
8 changed files with 624 additions and 218 deletions
+16 -1
View File
@@ -12,14 +12,16 @@ function workspaceColor(index) {
function mapWorkspace(record, index) {
var workspace = record && record.workspace ? record.workspace : record;
var displayName = workspace.display_name || workspace.slug || workspace.id;
var settings = workspace.settings || {};
return {
id: workspace.id,
slug: workspace.slug,
name: displayName,
role: 'Owner',
letter: displayName.charAt(0).toUpperCase(),
color: workspaceColor(index),
color: settings.color || workspaceColor(index),
status: workspace.status,
settings: settings,
};
}
@@ -113,6 +115,11 @@ async function loadWorkspaces() {
return workspaceLoadPromise;
}
async function refreshWorkspaces() {
workspaceLoadPromise = null;
return loadWorkspaces();
}
function initWorkspaceSwitcher() {
renderWorkspaceList();
loadWorkspaces();
@@ -134,8 +141,16 @@ function switchWorkspace(workspaceId) {
window.dispatchEvent(new CustomEvent('crank:workspacechange', { detail: workspace }));
}
function setCurrentWorkspace(workspace) {
persistCurrentWorkspace(workspace);
renderWorkspaceList();
window.dispatchEvent(new CustomEvent('crank:workspacechange', { detail: workspace }));
}
window.getCurrentWorkspace = getCurrentWs;
window.whenWorkspacesReady = loadWorkspaces;
window.refreshWorkspaces = refreshWorkspaces;
window.setCurrentWorkspace = setCurrentWorkspace;
window.hasWorkspaceApiFailure = function() { return workspaceLoadFailed; };
document.addEventListener('DOMContentLoaded', initWorkspaceSwitcher);