-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUseCurrentCode.ts
More file actions
32 lines (26 loc) · 935 Bytes
/
UseCurrentCode.ts
File metadata and controls
32 lines (26 loc) · 935 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import { ref } from 'vue';
import type { IApplicationCode } from '@/application/Context/State/Code/IApplicationCode';
import type { IEventSubscriptionCollection } from '@/infrastructure/Events/IEventSubscriptionCollection';
import { useCollectionState } from './UseCollectionState';
export function useCurrentCode(
state: ReturnType<typeof useCollectionState>,
events: IEventSubscriptionCollection,
) {
const { onStateChange } = state;
const currentCode = ref<string>('');
onStateChange((newState) => {
updateCurrentCode(newState.code.current);
subscribeToCodeChanges(newState.code);
}, { immediate: true });
function subscribeToCodeChanges(code: IApplicationCode) {
events.unsubscribeAllAndRegister([
code.changed.on((newCode) => updateCurrentCode(newCode.code)),
]);
}
function updateCurrentCode(newCode: string) {
currentCode.value = newCode;
}
return {
currentCode,
};
}