49
49
Cancel
50
50
</button >
51
51
</form >
52
+ <Toast
53
+ v-if =" showToast"
54
+ :message =" toastMessage"
55
+ :type =" toastAlertType"
56
+ />
52
57
</template >
53
58
54
59
<script >
55
60
import { useRoute , useRouter } from ' vue-router' ;
56
61
import axios from ' axios' ;
57
62
import { ref , computed } from ' vue' ;
58
63
import _ from ' lodash' ;
64
+ import Toast from ' @/components/Toast.vue' ;
59
65
60
66
export default {
67
+ components: {
68
+ Toast
69
+ },
61
70
setup () {
62
71
const route = useRoute ();
63
72
const router = useRouter ();
64
73
const todo = ref (null );
65
74
const originalTodo = ref (null );
66
75
const loading = ref (true );
76
+ const showToast = ref (false );
77
+ const toastMessage = ref (' ' );
78
+ const toastAlertType = ref (' ' );
67
79
const todoId = route .params .id
68
80
69
81
const getTodo = async () => {
70
- const res = await axios .get (`
71
- http://localhost:3000/todos/${ todoId}
72
- ` );
82
+ try {
83
+ const res = await axios .get (`
84
+ http://localhost:3000/todos/${ todoId}
85
+ ` );
73
86
74
- todo .value = { ... res .data };
75
- originalTodo .value = { ... res .data };
87
+ todo .value = { ... res .data };
88
+ originalTodo .value = { ... res .data };
76
89
77
- loading .value = false ;
90
+ loading .value = false ;
91
+ } catch (error) {
92
+ console .log (error);
93
+ tiggerToast (' Something went wrong' , ' danger' );
94
+ }
78
95
};
79
96
80
97
const todoUpdated = computed (() => {
@@ -93,15 +110,32 @@ export default {
93
110
94
111
getTodo ();
95
112
113
+ const tiggerToast = (message , type = ' success' ) => {
114
+ toastMessage .value = message;
115
+ toastAlertType .value = type;
116
+ showToast .value = true ;
117
+ setTimeout (() => {
118
+ toastMessage .value = ' ' ;
119
+ toastAlertType .value = ' ' ;
120
+ showToast .value = false ;
121
+ }, 3000 )
122
+ }
123
+
96
124
const onSave = async () => {
97
- const res = await axios .put (`
98
- http://localhost:3000/todos/${ todoId}
99
- ` , {
100
- subject: todo .value .subject ,
101
- completed: todo .value .completed
102
- });
125
+ try {
126
+ const res = await axios .put (`
127
+ http://localhost:3000/todos/${ todoId}
128
+ ` , {
129
+ subject: todo .value .subject ,
130
+ completed: todo .value .completed
131
+ });
103
132
104
- originalTodo .value = {... res .data };
133
+ originalTodo .value = {... res .data };
134
+ tiggerToast (' Successfully saved!' );
135
+ } catch (error) {
136
+ console .log (error);
137
+ tiggerToast (' Something went wrong' , ' danger' )
138
+ }
105
139
};
106
140
107
141
return {
@@ -111,6 +145,9 @@ export default {
111
145
moveToTodoListPage,
112
146
onSave,
113
147
todoUpdated,
148
+ showToast,
149
+ toastMessage,
150
+ toastAlertType,
114
151
};
115
152
}
116
153
}
0 commit comments