Skip to content

Commit d3199de

Browse files
committed
fix: bug with two vm stores and view models config
1 parent c47fd3c commit d3199de

File tree

3 files changed

+34
-6
lines changed

3 files changed

+34
-6
lines changed

.changeset/fancy-tigers-report.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"mobx-view-model": patch
3+
---
4+
5+
fix overriding observable config after create second view model store

src/config/utils/merge-vm-configs.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
11
import type { Maybe } from 'yummies/types';
22

3-
import { viewModelsConfig } from '../global-config.js';
3+
import { viewModelsConfig as globalConfig } from '../global-config.js';
44
import type { ViewModelsConfig, ViewModelsRawConfig } from '../types.js';
55

66
/**
77
* [**Documentation**](https://js2me.github.io/mobx-view-model/api/view-models/view-models-config)
88
*/
99
export const mergeVMConfigs = (...configs: Maybe<ViewModelsRawConfig>[]) => {
1010
const result: ViewModelsConfig = {
11-
...viewModelsConfig,
12-
startViewTransitions: structuredClone(
13-
viewModelsConfig.startViewTransitions,
14-
),
11+
...globalConfig,
12+
startViewTransitions: structuredClone(globalConfig.startViewTransitions),
13+
observable: {
14+
viewModels: {
15+
...globalConfig.observable.viewModels,
16+
},
17+
viewModelStores: {
18+
...globalConfig.observable.viewModelStores,
19+
},
20+
},
1521
};
1622

1723
configs.forEach((config) => {

src/view-model/view-model.store.base.test.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { describe, expect, it, vi } from 'vitest';
22

33
import type { AnyObject, EmptyObject, Maybe } from 'yummies/types';
4-
4+
import type { ViewModelsConfig } from '../config/types.js';
55
import { ViewModelBaseMock } from './view-model.base.test.js';
66
import type { ViewModel } from './view-model.js';
77
import { ViewModelStoreBase } from './view-model.store.base.js';
@@ -185,4 +185,21 @@ describe('ViewModelStoreBase', () => {
185185

186186
expect(vmStore.getId(MyVM)).toBe(vm.id);
187187
});
188+
189+
it('bug with overriding observable after create second store', async () => {
190+
new ViewModelStoreBase({
191+
vmConfig: {
192+
observable: {
193+
viewModelStores: { useDecorators: false },
194+
viewModels: { useDecorators: false },
195+
},
196+
},
197+
});
198+
const vmStore2 = new ViewModelStoreBaseMock();
199+
200+
const vmConfig = (vmStore2 as any).vmConfig as ViewModelsConfig;
201+
202+
expect(vmConfig.observable.viewModelStores.useDecorators).toBe(true);
203+
expect(vmConfig.observable.viewModels.useDecorators).toBe(true);
204+
});
188205
});

0 commit comments

Comments
 (0)