refactor: setup sidebar header

This commit is contained in:
Haileyesus
2026-03-27 16:44:56 +03:00
parent 186dbcde63
commit b57fec9d66
7 changed files with 183 additions and 54 deletions

View File

@@ -0,0 +1,33 @@
import { useState, useEffect, useCallback } from 'react';
import { fetchWorkspaces } from '../data/workspacesApi';
import type { Project } from '@/types/app';
/**
* Hook layer (The Manager)
* Manages fetching workspaces and loading states.
*/
export const useWorkspaces = () => {
const [workspaces, setWorkspaces] = useState<Project[]>([]);
const [isRefreshing, setIsRefreshing] = useState(false);
const refreshWorkspaces = useCallback(async () => {
setIsRefreshing(true);
try {
const data = await fetchWorkspaces();
setWorkspaces(data);
} finally {
setIsRefreshing(false);
}
}, []);
// Fetch on mount
useEffect(() => {
refreshWorkspaces();
}, [refreshWorkspaces]);
return {
workspaces,
isRefreshing,
refreshWorkspaces,
};
};