/** App del Workspace normalizada para el launcher. */
export type WorkspaceApp = {
	id: string;
	name: string;
	/** Identificador legible (subtítulo en la tarjeta del launcher). */
	slug: string | null;
	/** URL de entrada de la app (login_url); para apps del mismo origin trae `?active_system`. */
	url: string;
	iconUrl: string | null;
};

/**
 * Store de las apps del Workspace/Hub accesibles al usuario (launcher de productos).
 * Es independiente de `systemStore` (SCAF/SCAII): aquí viven los productos del Workspace,
 * allá el sistema interno de Mi Aplicación.
 */
class WorkspaceAppsStore {
	_apps = $state<WorkspaceApp[]>([]);
	_routing = $state<string>('');

	get apps() {
		return this._apps;
	}
	get routing() {
		return this._routing;
	}
	get hasApps() {
		return this._apps.length > 0;
	}

	initialize(apps: WorkspaceApp[], routing: string | null) {
		this._apps = Array.isArray(apps) ? apps : [];
		this._routing = routing ?? '';
	}

	clear() {
		this._apps = [];
		this._routing = '';
	}
}

export const workspaceAppsStore = new WorkspaceAppsStore();
