Skip to content

Commit 4429319

Browse files
fix(feddbackId): add id for callback feedback delete
1 parent 395b70b commit 4429319

File tree

4 files changed

+35
-7
lines changed

4 files changed

+35
-7
lines changed

components/FeedBack/Snackers.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
variant="flat"
5252
size="20"
5353
:color="feedback.type"
54-
@click="feedback_store.delete_feedback(index)"
54+
@click="feedback_store.delete_feedback(feedback.id)"
5555
>
5656
<v-icon icon="mdi-close" size="20" color="white" />
5757
</v-btn>

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
"pinia": "^2.2.2",
5555
"sass": "^1.77.8",
5656
"semver": "^7.6.3",
57+
"uuid": "^11.1.0",
5758
"vue-recaptcha": "^2.0.3",
5859
"vue3-carousel": "^0.3.3"
5960
},

stores/feedback.js

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { v4 as uuidv4 } from "uuid"
2+
13
export const use_feedback_store = defineStore("feedback", {
24
state: () => ({
35
feedbacks: [],
@@ -6,30 +8,34 @@ export const use_feedback_store = defineStore("feedback", {
68
}),
79
actions: {
810
async add_error(code, route, name, description) {
11+
const feedbackId = uuidv4()
912
await this.feedbacks.push({
13+
id: feedbackId,
1014
type: "error",
1115
code,
1216
route,
1317
name,
1418
description,
1519
})
16-
const feedback_index = this.feedbacks.length - 1
1720
setTimeout(() => {
18-
this.delete_feedback(feedback_index)
21+
this.delete_feedback(feedbackId)
1922
}, this.feedbacks_timeout_miliseconds)
2023
},
2124
async add_success(description) {
25+
const feedbackId = uuidv4()
2226
await this.feedbacks.push({
27+
id: feedbackId,
2328
type: "success",
2429
description,
2530
})
26-
const feedback_index = this.feedbacks.length - 1
2731
setTimeout(() => {
28-
this.delete_feedback(feedback_index)
32+
this.delete_feedback(feedbackId)
2933
}, this.feedbacks_timeout_miliseconds)
3034
},
31-
async delete_feedback(feedback_index) {
32-
await this.feedbacks.splice(feedback_index, 1)
35+
async delete_feedback(feedbackId) {
36+
this.feedbacks = this.feedbacks.filter(
37+
(feedback) => feedback.id !== feedbackId,
38+
)
3339
},
3440
async delete_server_error() {
3541
this.server_error = false

test/stores/Feedback.nuxt.test.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,32 @@ describe("Feedback Store", () => {
3434
})
3535
})
3636

37+
describe("add_error", () => {
38+
test("test feedbacks_timeout", () => {
39+
feedback_store.feedbacks_timeout_miliseconds = 500
40+
feedback_store.add_error(
41+
500,
42+
"/test",
43+
"test message",
44+
"test description",
45+
)
46+
expect(feedback_store.feedbacks.length).toBe(1)
47+
setTimeout(() => {
48+
expect(feedback_store.feedbacks.length).toBe(0)
49+
}, 1000)
50+
})
51+
})
52+
3753
describe("add_success", () => {
3854
test("test add_success", () => {
55+
feedback_store.feedbacks_timeout_miliseconds = 500
3956
feedback_store.add_success("test description")
4057
expect(feedback_store.feedbacks.length).toBe(1)
4158
expect(feedback_store.feedbacks[0].type).toBe("success")
59+
60+
setTimeout(() => {
61+
expect(feedback_store.feedbacks.length).toBe(0)
62+
}, 1000)
4263
})
4364
})
4465
describe("delete_feedback", () => {

0 commit comments

Comments
 (0)