Skip to content

Commit c8eb6f4

Browse files
committed
56
1 parent 9698813 commit c8eb6f4

File tree

4 files changed

+63
-23
lines changed

4 files changed

+63
-23
lines changed

db.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
"id": 18
6262
},
6363
{
64-
"subject": "new todo222",
64+
"subject": "new todo2222",
6565
"completed": true,
6666
"id": 21
6767
}

src/composables/toast.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { ref, onUnmounted } from 'vue';
2+
export const useToast = () => {
3+
const toastMessage = ref('');
4+
const toastAlertType = ref('');
5+
const showToast = ref(false);
6+
const timeout = ref(null);
7+
const triggerToast = (message, type = 'success') => {
8+
toastMessage.value = message;
9+
toastAlertType.value = type;
10+
showToast.value = true;
11+
timeout.value = setTimeout(() => {
12+
toastMessage.value = '';
13+
toastAlertType.value = '';
14+
showToast.value = false;
15+
}, 1000)
16+
}
17+
18+
onUnmounted(() => {
19+
clearTimeout(timeout.value);
20+
})
21+
return {
22+
toastMessage,
23+
toastAlertType,
24+
showToast,
25+
triggerToast
26+
}
27+
}

src/pages/todos/_id.vue

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,10 @@
5959
<script>
6060
import { useRoute, useRouter } from 'vue-router';
6161
import axios from 'axios';
62-
import { ref, computed, onUnmounted } from 'vue';
62+
import { ref, computed } from 'vue';
6363
import _ from 'lodash';
6464
import Toast from '@/components/Toast.vue';
65+
import { useToast } from '@/composables/toast';
6566
6667
export default {
6768
components: {
@@ -73,15 +74,14 @@ export default {
7374
const todo = ref(null);
7475
const originalTodo = ref(null);
7576
const loading = ref(true);
76-
const showToast = ref(false);
77-
const toastMessage = ref('');
78-
const toastAlertType = ref('');
79-
const timeout = ref(null);
80-
const todoId = route.params.id
77+
const {
78+
toastMessage,
79+
toastAlertType,
80+
showToast,
81+
triggerToast
82+
} = useToast();
8183
82-
onUnmounted(() => {
83-
clearTimeout(timeout.value);
84-
})
84+
const todoId = route.params.id
8585
8686
const getTodo = async () => {
8787
try {
@@ -95,7 +95,7 @@ export default {
9595
loading.value = false;
9696
} catch (error) {
9797
console.log(error);
98-
tiggerToast('Something went wrong', 'danger');
98+
triggerToast('Something went wrong', 'danger');
9999
}
100100
};
101101
@@ -115,16 +115,7 @@ export default {
115115
116116
getTodo();
117117
118-
const tiggerToast = (message, type = 'success') => {
119-
toastMessage.value = message;
120-
toastAlertType.value = type;
121-
showToast.value = true;
122-
timeout.value = setTimeout(() => {
123-
toastMessage.value = '';
124-
toastAlertType.value = '';
125-
showToast.value = false;
126-
}, 5000)
127-
}
118+
128119
129120
const onSave = async () => {
130121
try {
@@ -136,10 +127,10 @@ export default {
136127
});
137128
138129
originalTodo.value = {...res.data};
139-
tiggerToast('Successfully saved!');
130+
triggerToast('Successfully saved!');
140131
} catch (error) {
141132
console.log(error);
142-
tiggerToast('Something went wrong', 'danger')
133+
triggerToast('Something went wrong', 'danger')
143134
}
144135
};
145136

src/pages/todos/index.vue

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,26 @@
4242
</ul>
4343
</nav>
4444
</div>
45+
<Toast
46+
v-if="showToast"
47+
:message="toastMessage"
48+
:type="toastAlertType"
49+
/>
4550
</template>
4651

4752
<script>
4853
import { ref, computed, watch } from 'vue';
4954
import TodoSimpleForm from '@/components/TodoSimpleForm.vue';
5055
import TodoList from '@/components/TodoList.vue';
5156
import axios from 'axios';
57+
import Toast from '@/components/Toast.vue';
58+
import { useToast } from '@/composables/toast';
5259
5360
export default {
5461
components: {
5562
TodoSimpleForm,
5663
TodoList,
64+
Toast,
5765
},
5866
setup() {
5967
const todos = ref([]);
@@ -66,6 +74,13 @@ export default {
6674
return Math.ceil(numberOfTodos.value/limit);
6775
});
6876
77+
const {
78+
toastMessage,
79+
toastAlertType,
80+
showToast,
81+
triggerToast
82+
} = useToast();
83+
6984
const getTodos = async (page = currentPage.value) => {
7085
currentPage.value = page;
7186
try {
@@ -77,6 +92,7 @@ export default {
7792
} catch (err) {
7893
console.log(err);
7994
error.value = 'Something went wrong.';
95+
triggerToast('Something went wrong', 'danger')
8096
}
8197
};
8298
@@ -95,6 +111,7 @@ export default {
95111
} catch (err) {
96112
console.log(err);
97113
error.value = 'Something went wrong.';
114+
triggerToast('Something went wrong', 'danger')
98115
}
99116
};
100117
@@ -108,6 +125,7 @@ export default {
108125
} catch (err) {
109126
console.log(err);
110127
error.value = 'Something went wrong.';
128+
triggerToast('Something went wrong', 'danger')
111129
}
112130
};
113131
@@ -123,6 +141,7 @@ export default {
123141
} catch (err) {
124142
console.log(err);
125143
error.value = 'Something went wrong.';
144+
triggerToast('Something went wrong', 'danger')
126145
}
127146
128147
};
@@ -151,6 +170,9 @@ export default {
151170
numberOfPages,
152171
currentPage,
153172
getTodos,
173+
toastMessage,
174+
toastAlertType,
175+
showToast,
154176
};
155177
}
156178
}

0 commit comments

Comments
 (0)