1
+ import { ref } from 'vue'
2
+
1
3
import { WorklogItem } from '~/composables/server/worklog-tracker/types/worklogItem'
2
4
3
5
const url = '/api/worklog-tracker/worklogs'
@@ -15,6 +17,8 @@ function transformWorklogItem(worklogItem: WorklogItem): WorklogItem {
15
17
}
16
18
17
19
export function useWorklogStorage ( ) {
20
+ const operationLoading = ref ( false )
21
+
18
22
async function load ( date : Date ) : Promise < WorklogItem [ ] > {
19
23
const query = new URLSearchParams ( {
20
24
date : date . toLocaleDateString ( )
@@ -27,41 +31,60 @@ export function useWorklogStorage() {
27
31
}
28
32
29
33
async function save ( worklogItem : WorklogItem ) : Promise < WorklogItem > {
30
- const response = await fetch ( url , {
31
- method : 'POST' ,
32
- body : JSON . stringify ( worklogItem ) ,
33
- headers : {
34
- 'Content-Type' : 'application/json'
35
- }
36
- } )
34
+ try {
35
+ operationLoading . value = true
37
36
38
- const result = await response . json ( )
37
+ const response = await fetch ( url , {
38
+ method : 'POST' ,
39
+ body : JSON . stringify ( worklogItem ) ,
40
+ headers : {
41
+ 'Content-Type' : 'application/json'
42
+ }
43
+ } )
39
44
40
- return transformWorklogItem ( result )
45
+ const result = await response . json ( )
46
+
47
+ return transformWorklogItem ( result )
48
+ } finally {
49
+ operationLoading . value = false
50
+ }
41
51
}
42
52
43
53
async function remove ( worklogItem : WorklogItem ) : Promise < void > {
44
- const query = new URLSearchParams ( {
45
- issueId : worklogItem . issueId ,
46
- worklogId : worklogItem . id
47
- } )
54
+ try {
55
+ operationLoading . value = true
48
56
49
- await fetch ( `${ url } ?${ query . toString ( ) } ` , {
50
- method : 'DELETE'
51
- } )
57
+ const query = new URLSearchParams ( {
58
+ issueId : worklogItem . issueId ,
59
+ worklogId : worklogItem . id
60
+ } )
61
+
62
+ await fetch ( `${ url } ?${ query . toString ( ) } ` , {
63
+ method : 'DELETE'
64
+ } )
65
+ } finally {
66
+ operationLoading . value = false
67
+ }
52
68
}
53
69
54
70
async function update ( worklogItem : WorklogItem ) : Promise < void > {
55
- await fetch ( url , {
56
- method : 'PUT' ,
57
- body : JSON . stringify ( worklogItem ) ,
58
- headers : {
59
- 'Content-Type' : 'application/json'
60
- }
61
- } )
71
+ try {
72
+ operationLoading . value = true
73
+
74
+ await fetch ( url , {
75
+ method : 'PUT' ,
76
+ body : JSON . stringify ( worklogItem ) ,
77
+ headers : {
78
+ 'Content-Type' : 'application/json'
79
+ }
80
+ } )
81
+ } finally {
82
+ operationLoading . value = false
83
+ }
62
84
}
63
85
64
86
return {
87
+ operationLoading,
65
88
load,
66
89
save,
67
90
remove,
0 commit comments