@@ -233,15 +233,21 @@ export class Task {
233233
234234 async getTasksFromFile ( ) : Promise < taskCategory [ ] > {
235235 const tasks = await readTextFile ( TASKS_FILE , { dir : DEFAULT_DIRECTORY } ) ;
236- return JSON . parse ( tasks ) ;
236+ // check if a valid json
237+ try {
238+ return JSON . parse ( tasks ) ;
239+ } catch ( error ) {
240+ console . error ( "Error parsing tasks:" , error ) ;
241+ return [ ] ;
242+ }
237243 }
238244
239245 /// newly refactored
240246 async getTasksByCategoryPosition ( position : number ) {
241247 try {
242248 const tasks = await this . retrieveTasksByCategoryPosition ( position ) ;
243249 this . updateTaskCategoryList ( position , tasks ) ;
244- await this . saveTasksToFileIfNeeded ( ! tasks ) ; // Save to file if tasks are not retrieved
250+ await this . saveTasksToFileIfNeeded ( tasks . length > 0 ) ;
245251 return tasks ;
246252 } catch ( error ) {
247253 console . error ( "Error getting tasks by category position:" , ( error as Error ) . message ) ;
@@ -347,7 +353,7 @@ export class Task {
347353 * @returns {task[] } - The list of tasks.
348354 */
349355 async getTasksByCategoryPositionFromFile ( position : number ) : Promise < task [ ] > {
350- const tasks = await readTextFile ( `tasks.json` , { dir : DEFAULT_DIRECTORY } ) ;
356+ const tasks = await readTextFile ( TASKS_FILE , { dir : DEFAULT_DIRECTORY } ) ;
351357 const taskCategories = JSON . parse ( tasks ) ;
352358 return taskCategories [ position ] . tasks ;
353359 }
@@ -412,7 +418,7 @@ export class Task {
412418 }
413419
414420 async getTaskByIdFromFile ( categoryID : string ) : Promise < task [ ] > {
415- const tasks = await readTextFile ( `tasks.json` , { dir : DEFAULT_DIRECTORY } ) ;
421+ const tasks = await readTextFile ( TASKS_FILE , { dir : DEFAULT_DIRECTORY } ) ;
416422 const taskCategories = JSON . parse ( tasks ) ;
417423 return taskCategories . find ( ( taskCategory : taskCategory ) => taskCategory . id === categoryID ) . tasks ;
418424 }
@@ -479,6 +485,27 @@ export class Task {
479485 }
480486 }
481487
488+ async addNewTaskCategory ( title : string ) {
489+ try {
490+ if ( ! navigator . onLine ) throw new Error ( "No internet connection" ) ;
491+ const url = `${ this . baseUrl } /users/@me/lists`
492+ const response = await axios . post ( url , {
493+ title,
494+ } , {
495+ headers : {
496+ Authorization : `Bearer ${ this . accessToken } ` ,
497+ } ,
498+ } ) ;
499+ // console.log(response.data, "add task");
500+ return response . data ;
501+ } catch ( error ) {
502+ console . error ( error ) ;
503+ this . errorHandler ( error as Error ) ;
504+ return null ;
505+ }
506+ }
507+
508+
482509 async clearPositionCache ( position : number ) {
483510 console . log ( "clearing cache" , position ) ;
484511 this . tasksCategoryList . clearCache ( position ) ;
0 commit comments