@@ -14,7 +14,9 @@ type TaskListWithData = TaskList & {
1414export const useTaskStore = defineStore ( 'task' , ( ) => {
1515 const lists = ref < TaskListWithData [ ] > ( [ ] )
1616 const tasks = ref < Task [ ] > ( [ ] )
17+ const notCompletedTasks = ref < Task [ ] > ( [ ] )
1718 const isTodayOnly = ref ( false )
19+ const isInFlowMode = ref ( false )
1820 const isInitialized = ref ( false )
1921
2022 const userStore = useUserStore ( )
@@ -25,6 +27,16 @@ export const useTaskStore = defineStore('task', () => {
2527 ) . filter ( ( taskList ) => isTodayOnly . value ? taskList . tasks . filter ( ( task ) => ! task . completedAt && task . date && isToday ( parseDate ( task . date ) , getLocalTimeZone ( ) ) ) . length : true ) ,
2628 )
2729 const myTodayTasks = computed ( ( ) => myLists . value . flatMap ( ( taskList ) => taskList . tasks . filter ( ( task ) => ! task . completedAt && task . date && isToday ( parseDate ( task . date ) , getLocalTimeZone ( ) ) ) ) )
30+ const myTasksOrderedByDate = computed ( ( ) => {
31+ const filterByMe = ( task : Task ) => task . performerId === userStore . id
32+ const sortByDateAsc = ( a : Task , b : Task ) => a . date && b . date ? new Date ( a . date ) . getTime ( ) - new Date ( b . date ) . getTime ( ) : 0
33+
34+ const myTasks = notCompletedTasks . value . filter ( filterByMe )
35+ const tasksWithDate = myTasks . filter ( ( task ) => task . date ) . sort ( sortByDateAsc )
36+ const tasksWithoutDate = myTasks . filter ( ( task ) => ! task . date )
37+
38+ return [ ...tasksWithDate , ...tasksWithoutDate ]
39+ } )
2840
2941 const initDataRaw = useSignal ( _initDataRaw )
3042
@@ -44,6 +56,7 @@ export const useTaskStore = defineStore('task', () => {
4456 isInitialized . value = true
4557
4658 await updateCompleted ( )
59+ await updateNotCompleted ( )
4760 } catch ( error ) {
4861 if ( error instanceof Error ) {
4962 if ( error . message . includes ( '401' ) ) {
@@ -80,6 +93,30 @@ export const useTaskStore = defineStore('task', () => {
8093 }
8194 }
8295
96+ async function updateNotCompleted ( ) {
97+ try {
98+ const data = await $fetch ( '/api/task/list/not-completed' , {
99+ headers : {
100+ Authorization : `tma ${ initDataRaw . value } ` ,
101+ } ,
102+ } )
103+ if ( ! data ) {
104+ return
105+ }
106+
107+ notCompletedTasks . value = data
108+ } catch ( error ) {
109+ if ( error instanceof Error ) {
110+ if ( error . message . includes ( '401' ) ) {
111+ // No session
112+ }
113+ if ( error . message . includes ( '404' ) ) {
114+ // Not found
115+ }
116+ }
117+ }
118+ }
119+
83120 async function setAsFocused ( taskId : string ) {
84121 try {
85122 await $fetch ( `/api/task/id/${ taskId } /focus` , {
@@ -117,11 +154,14 @@ export const useTaskStore = defineStore('task', () => {
117154 return {
118155 lists,
119156 tasks,
157+ notCompletedTasks,
120158 isTodayOnly,
159+ isInFlowMode,
121160 isInitialized,
122161
123162 myLists,
124163 myTodayTasks,
164+ myTasksOrderedByDate,
125165
126166 update,
127167 setAsFocused,
0 commit comments