@@ -21,6 +21,7 @@ import { TaskService } from '../services/TaskService';
2121import { TeamConfig } from '../models/Team' ;
2222import { TeamService } from '../services/TeamService' ;
2323import InlineToaster , { useInlineToaster } from "../components/toast/InlineToaster" ;
24+ import { initializeTeam } from '@/api/config' ;
2425
2526/**
2627 * HomePage component - displays task lists and provides navigation
@@ -35,43 +36,129 @@ const HomePage: React.FC = () => {
3536 /**
3637 * Load teams and set default team on component mount
3738 */
38- useEffect ( ( ) => {
39- const loadDefaultTeam = async ( ) => {
40- let defaultTeam = TeamService . getStoredTeam ( ) ;
41- if ( defaultTeam ) {
42- setSelectedTeam ( defaultTeam ) ;
43- console . log ( 'Default team loaded from storage:' , defaultTeam . name ) ;
39+ // useEffect(() => {
40+ // const loadDefaultTeam = async () => {
41+ // let defaultTeam = TeamService.getStoredTeam();
42+ // if (defaultTeam) {
43+ // setSelectedTeam(defaultTeam);
44+ // console.log('Default team loaded from storage:', defaultTeam.name);
45+
46+ // setIsLoadingTeam(false);
47+ // return true;
48+ // }
49+ // setIsLoadingTeam(true);
50+ // try {
51+ // const teams = await TeamService.getUserTeams();
52+ // console.log('All teams loaded:', teams);
53+ // if (teams.length > 0) {
54+ // // Always prioritize "Business Operations Team" as default
55+ // const hrTeam = teams.find(team => team.name === "Human Resources Team");
56+ // defaultTeam = hrTeam || teams[0];
57+
58+ // TeamService.storageTeam(defaultTeam);
59+ // setSelectedTeam(defaultTeam);
60+ // console.log('Default team loaded:', defaultTeam.name, 'with', defaultTeam.starting_tasks?.length || 0, 'starting tasks');
61+ // console.log('Team logo:', defaultTeam.logo);
62+ // console.log('Team description:', defaultTeam.description);
63+
64+ // } else {
65+ // console.log('No teams found - user needs to upload a team configuration');
66+ // // Even if no teams are found, we clear the loading state to show the "no team" message
67+ // }
68+ // } catch (error) {
69+ // console.error('Error loading default team:', error);
70+ // } finally {
71+ // setIsLoadingTeam(false);
72+ // }
73+ // };
74+
75+ // loadDefaultTeam();
76+ // }, []);
4477
45- setIsLoadingTeam ( false ) ;
46- return true ;
78+ useEffect ( ( ) => {
79+ const initTeam = async ( ) => {
80+ setIsLoadingTeam ( true ) ;
81+
82+ try {
83+ console . log ( 'Initializing team from backend...' ) ;
84+
85+ // Call the backend init_team endpoint (takes ~20 seconds)
86+ const initResponse = await initializeTeam ( ) ;
87+
88+ if ( initResponse . status === 'Request started successfully' && initResponse . team_id ) {
89+ console . log ( 'Team initialization completed:' , initResponse . team_id ) ;
90+
91+ // Now fetch the actual team details using the team_id
92+ const teams = await TeamService . getUserTeams ( ) ;
93+ const initializedTeam = teams . find ( team => team . team_id === initResponse . team_id ) ;
94+
95+ if ( initializedTeam ) {
96+ setSelectedTeam ( initializedTeam ) ;
97+ TeamService . storageTeam ( initializedTeam ) ;
98+
99+ console . log ( 'Team loaded successfully:' , initializedTeam . name ) ;
100+ console . log ( 'Team agents:' , initializedTeam . agents ?. length || 0 ) ;
101+
102+ showToast (
103+ `${ initializedTeam . name } team initialized successfully with ${ initializedTeam . agents ?. length || 0 } agents` ,
104+ "success"
105+ ) ;
106+ } else {
107+ // Fallback: if we can't find the specific team, use HR team or first available
108+ console . log ( 'Specific team not found, using default selection logic' ) ;
109+ const hrTeam = teams . find ( team => team . name === "Human Resources Team" ) ;
110+ const defaultTeam = hrTeam || teams [ 0 ] ;
111+
112+ if ( defaultTeam ) {
113+ setSelectedTeam ( defaultTeam ) ;
114+ TeamService . storageTeam ( defaultTeam ) ;
115+ showToast (
116+ `${ defaultTeam . name } team loaded as default` ,
117+ "success"
118+ ) ;
119+ }
120+ }
121+
122+ } else {
123+ throw new Error ( 'Invalid response from init_team endpoint' ) ;
47124 }
48- setIsLoadingTeam ( true ) ;
125+
126+ } catch ( error ) {
127+ console . error ( 'Error initializing team from backend:' , error ) ;
128+ showToast ( "Team initialization failed, using fallback" , "warning" ) ;
129+
130+ // Fallback to the old client-side method
49131 try {
132+ console . log ( 'Using fallback: client-side team loading...' ) ;
50133 const teams = await TeamService . getUserTeams ( ) ;
51- console . log ( 'All teams loaded:' , teams ) ;
52134 if ( teams . length > 0 ) {
53- // Always prioritize "Business Operations Team" as default
54- const businessOpsTeam = teams . find ( team => team . name === "Business Operations Team" ) ;
55- defaultTeam = businessOpsTeam || teams [ 0 ] ;
56- TeamService . storageTeam ( defaultTeam ) ;
135+ const hrTeam = teams . find ( team => team . name === "Human Resources Team" ) ;
136+ const defaultTeam = hrTeam || teams [ 0 ] ;
57137 setSelectedTeam ( defaultTeam ) ;
58- console . log ( 'Default team loaded:' , defaultTeam . name , 'with' , defaultTeam . starting_tasks ?. length || 0 , 'starting tasks' ) ;
59- console . log ( 'Team logo:' , defaultTeam . logo ) ;
60- console . log ( 'Team description:' , defaultTeam . description ) ;
61- console . log ( 'Is Business Operations Team:' , defaultTeam . name === "Business Operations Team" ) ;
138+ TeamService . storageTeam ( defaultTeam ) ;
139+
140+ showToast (
141+ `${ defaultTeam . name } team loaded (fallback mode)` ,
142+ "info"
143+ ) ;
62144 } else {
63145 console . log ( 'No teams found - user needs to upload a team configuration' ) ;
64- // Even if no teams are found, we clear the loading state to show the "no team" message
146+ showToast (
147+ "No teams found. Please upload a team configuration." ,
148+ "warning"
149+ ) ;
65150 }
66- } catch ( error ) {
67- console . error ( 'Error loading default team:' , error ) ;
68- } finally {
69- setIsLoadingTeam ( false ) ;
151+ } catch ( fallbackError ) {
152+ console . error ( 'Fallback team loading also failed:' , fallbackError ) ;
153+ showToast ( "Failed to load team configuration" , "error" ) ;
70154 }
71- } ;
155+ } finally {
156+ setIsLoadingTeam ( false ) ;
157+ }
158+ } ;
72159
73- loadDefaultTeam ( ) ;
74- } , [ ] ) ;
160+ initTeam ( ) ;
161+ } , [ showToast ] ) ;
75162
76163 /**
77164 * Handle new task creation from the "New task" button
@@ -109,12 +196,12 @@ const HomePage: React.FC = () => {
109196 console . log ( 'Teams refreshed after upload:' , teams . length ) ;
110197
111198 if ( teams . length > 0 ) {
112- // Always keep "Business Operations Team" as default, even after new uploads
113- const businessOpsTeam = teams . find ( team => team . name === "Business Operations Team" ) ;
114- const defaultTeam = businessOpsTeam || teams [ 0 ] ;
199+ // Always keep "Human Resources Team" as default, even after new uploads
200+ const hrTeam = teams . find ( team => team . name === "Human Resources Team" ) ;
201+ const defaultTeam = hrTeam || teams [ 0 ] ;
115202 setSelectedTeam ( defaultTeam ) ;
116203 console . log ( 'Default team after upload:' , defaultTeam . name ) ;
117- console . log ( 'Business Operations Team remains default' ) ;
204+ console . log ( 'Human Resources Team remains default' ) ;
118205 showToast (
119206 `Team uploaded successfully! ${ defaultTeam . name } remains your default team.` ,
120207 "success"
0 commit comments