@@ -24,18 +24,14 @@ import {
2424 useState ,
2525} from 'react' ;
2626
27- import {
28- DocEventType ,
29- type SDKToPanelMessage ,
30- type TransactionEvent ,
31- } from 'yorkie-js-sdk' ;
27+ import { DocEventType , Devtools , type SDKToPanelMessage } from 'yorkie-js-sdk' ;
3228import { connectPort , sendToSDK } from '../../port' ;
3329import { Code , YorkieError } from '@yorkie-js-sdk/src/util/error' ;
3430
3531const DocKeyContext = createContext < string > ( null ) ;
3632const YorkieDocContext = createContext ( null ) ;
37- const TransactionEventsContext = createContext < {
38- events : Array < TransactionEvent > ;
33+ const DocEventsForReplayContext = createContext < {
34+ events : Array < Devtools . DocEventsForReplay > ;
3935 hidePresenceEvents : boolean ;
4036 setHidePresenceEvents : Dispatch < SetStateAction < boolean > > ;
4137} > ( null ) ;
@@ -47,17 +43,16 @@ type Props = {
4743export function YorkieSourceProvider ( { children } : Props ) {
4844 const [ currentDocKey , setCurrentDocKey ] = useState < string > ( '' ) ;
4945 const [ doc , setDoc ] = useState ( null ) ;
50- const [ transactionEvents , setTransactionEvents ] = useState <
51- Array < TransactionEvent >
46+ const [ docEventsForReplay , setDocEventsForReplay ] = useState <
47+ Array < Devtools . DocEventsForReplay >
5248 > ( [ ] ) ;
5349
5450 // filter out presence events
55- const [ hideTransactionPresenceEvents , setHideTransactionPresenceEvents ] =
56- useState ( false ) ;
51+ const [ hidePresenceEvents , setHidePresenceEvents ] = useState ( false ) ;
5752
5853 const resetDocument = ( ) => {
5954 setCurrentDocKey ( '' ) ;
60- setTransactionEvents ( [ ] ) ;
55+ setDocEventsForReplay ( [ ] ) ;
6156 setDoc ( null ) ;
6257 } ;
6358
@@ -77,11 +72,11 @@ export function YorkieSourceProvider({ children }: Props) {
7772 case 'doc::sync::full' :
7873 // TODO(chacha912): Notify the user that they need to use the latest version of Yorkie-JS-SDK.
7974 if ( message . events === undefined ) break ;
80- setTransactionEvents ( message . events ) ;
75+ setDocEventsForReplay ( message . events ) ;
8176 break ;
8277 case 'doc::sync::partial' :
8378 if ( message . event === undefined ) break ;
84- setTransactionEvents ( ( events ) => [ ...events , message . event ] ) ;
79+ setDocEventsForReplay ( ( events ) => [ ...events , message . event ] ) ;
8580 break ;
8681 }
8782 } , [ ] ) ;
@@ -108,17 +103,17 @@ export function YorkieSourceProvider({ children }: Props) {
108103
109104 return (
110105 < DocKeyContext . Provider value = { currentDocKey } >
111- < TransactionEventsContext . Provider
106+ < DocEventsForReplayContext . Provider
112107 value = { {
113- events : transactionEvents ,
114- hidePresenceEvents : hideTransactionPresenceEvents ,
115- setHidePresenceEvents : setHideTransactionPresenceEvents ,
108+ events : docEventsForReplay ,
109+ hidePresenceEvents,
110+ setHidePresenceEvents,
116111 } }
117112 >
118113 < YorkieDocContext . Provider value = { [ doc , setDoc ] } >
119114 { children }
120115 </ YorkieDocContext . Provider >
121- </ TransactionEventsContext . Provider >
116+ </ DocEventsForReplayContext . Provider >
122117 </ DocKeyContext . Provider >
123118 ) ;
124119}
@@ -145,51 +140,54 @@ export function useYorkieDoc() {
145140 return value ;
146141}
147142
148- export enum TransactionEventType {
149- Document = 'document' ,
143+ /**
144+ * `DocEventScope` represents the scope of the document event.
145+ */
146+ export enum DocEventScope {
147+ Root = 'root' ,
150148 Presence = 'presence' ,
149+ Document = 'document' ,
151150}
152151
153- export const getTransactionEventType = (
154- event : TransactionEvent ,
155- ) : TransactionEventType => {
156- for ( const docEvent of event ) {
152+ export const getDocEventsScope = (
153+ events : Devtools . DocEventsForReplay ,
154+ ) : DocEventScope => {
155+ for ( const e of events ) {
157156 if (
158- docEvent . type === DocEventType . StatusChanged ||
159- docEvent . type === DocEventType . Snapshot ||
160- docEvent . type === DocEventType . LocalChange ||
161- docEvent . type === DocEventType . RemoteChange
157+ e . type === DocEventType . Snapshot ||
158+ e . type === DocEventType . LocalChange ||
159+ e . type === DocEventType . RemoteChange
162160 ) {
163- return TransactionEventType . Document ;
161+ return DocEventScope . Root ;
162+ } else if ( e . type === DocEventType . StatusChanged ) {
163+ return DocEventScope . Document ;
164164 }
165165 }
166166
167- return TransactionEventType . Presence ;
167+ return DocEventScope . Presence ;
168168} ;
169169
170- export function useTransactionEvents ( ) {
170+ export function useDocEventsForReplay ( ) {
171171 const { events, hidePresenceEvents, setHidePresenceEvents } = useContext (
172- TransactionEventsContext ,
172+ DocEventsForReplayContext ,
173173 ) ;
174174
175175 if ( events === undefined ) {
176176 throw new YorkieError (
177177 Code . ErrContextNotProvided ,
178- 'useTransactionEvents should be used within YorkieSourceProvider' ,
178+ 'useDocEventsForReplay should be used within YorkieSourceProvider' ,
179179 ) ;
180180 }
181181
182182 // create an enhanced events with metadata
183183 const enhancedEvents = useMemo ( ( ) => {
184184 return events . map ( ( event ) => {
185- const transactionEventType = getTransactionEventType ( event ) ;
185+ const scope = getDocEventsScope ( event ) ;
186186
187187 return {
188188 event,
189- transactionEventType,
190- isFiltered :
191- hidePresenceEvents &&
192- transactionEventType === TransactionEventType . Presence ,
189+ scope,
190+ isFiltered : hidePresenceEvents && scope === DocEventScope . Presence ,
193191 } ;
194192 } ) ;
195193 } , [ hidePresenceEvents , events ] ) ;
0 commit comments