@@ -3,14 +3,25 @@ import { useApiTransport } from '~/src/shared/lib/use-api-transport'
33import type { EventId , EventType , ServerEvent } from '~/src/shared/types' ;
44import { useCachedIdsStore } from "~/stores/cached-ids" ;
55import { useEventStore } from "~/stores/events" ;
6+ import { useLockedIdsStore } from "~/stores/locked-ids" ;
67
78export default defineNuxtPlugin ( ( ) => {
89 const eventsStore = useEventStore ( ) ;
910 const cachedIdsStore = useCachedIdsStore ( ) ;
11+ const lockedIdsStore = useLockedIdsStore ( ) ;
12+
13+ const {
14+ lockedIds,
15+ } = storeToRefs ( lockedIdsStore )
16+
17+ const {
18+ events,
19+ } = storeToRefs ( eventsStore )
1020
1121 const {
1222 deleteEvent,
1323 deleteEventsAll,
24+ deleteEventsList,
1425 deleteEventsByType,
1526 getEventsAll,
1627 getEvent,
@@ -19,7 +30,36 @@ export default defineNuxtPlugin(() => {
1930 rayStopExecution,
2031 } = useApiTransport ( ) ;
2132
33+ const removeList = async ( uuids : EventId [ ] ) => {
34+ if ( uuids . length === 1 ) {
35+ const res = await deleteEvent ( uuids [ 0 ] )
36+
37+ if ( res ) {
38+ eventsStore . removeById ( uuids [ 0 ] ) ;
39+ cachedIdsStore . removeById ( uuids [ 0 ] ) ;
40+ }
41+
42+ return
43+ }
44+
45+ const res = await deleteEventsList ( uuids )
46+
47+ if ( res ) {
48+ eventsStore . removeByIds ( uuids ) ;
49+ cachedIdsStore . removeByIds ( uuids ) ;
50+ }
51+ }
2252 const removeAll = async ( ) => {
53+ if ( lockedIds . value . length ) {
54+ const removedIds = events . value
55+ . filter ( ( { uuid } ) => ! lockedIds . value . includes ( uuid ) )
56+ . map ( ( { uuid } ) => uuid )
57+
58+ await removeList ( removedIds )
59+
60+ return
61+ }
62+
2363 const res = await deleteEventsAll ( )
2464
2565 if ( res ) {
@@ -29,20 +69,25 @@ export default defineNuxtPlugin(() => {
2969 }
3070
3171 const removeById = async ( eventId : EventId ) => {
32- const res = await deleteEvent ( eventId )
72+ await removeList ( [ eventId ] )
73+ }
3374
34- if ( res ) {
35- eventsStore . removeById ( eventId ) ;
36- cachedIdsStore . removeById ( eventId ) ;
75+ const removeByType = async ( eventType : EventType ) => {
76+ if ( lockedIds . value . length ) {
77+ const removedIds = events . value
78+ . filter ( ( { type, uuid } ) => type !== eventType || lockedIds . value . includes ( uuid ) )
79+ . map ( ( { uuid } ) => uuid )
80+
81+ await removeList ( removedIds )
82+
83+ return
3784 }
38- }
3985
40- const removeByType = async ( type : EventType ) => {
41- const res = await deleteEventsByType ( type )
86+ const res = await deleteEventsByType ( eventType )
4287
4388 if ( res ) {
44- eventsStore . removeByType ( type ) ;
45- cachedIdsStore . removeByType ( type ) ;
89+ eventsStore . removeByType ( eventType ) ;
90+ cachedIdsStore . removeByType ( eventType ) ;
4691 }
4792 }
4893
@@ -61,10 +106,6 @@ export default defineNuxtPlugin(() => {
61106 } )
62107 }
63108
64- const {
65- events,
66- } = storeToRefs ( eventsStore )
67-
68109 const {
69110 cachedIds,
70111 } = storeToRefs ( cachedIdsStore )
@@ -88,6 +129,11 @@ export default defineNuxtPlugin(() => {
88129 rayExecution : {
89130 continue : rayContinueExecution ,
90131 stop : rayStopExecution ,
132+ } ,
133+ lockedIds : {
134+ items : lockedIds ,
135+ add : lockedIdsStore . add ,
136+ remove : lockedIdsStore . remove ,
91137 }
92138 }
93139 }
0 commit comments