From 0e9fcaf54255f3b77ec47dfbb0a24ccacde35690 Mon Sep 17 00:00:00 2001 From: thecodrr Date: Sat, 28 Mar 2020 13:51:18 +0500 Subject: [PATCH] feat: make zustand store logic ready for classes --- apps/web/src/common/store.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/apps/web/src/common/store.js b/apps/web/src/common/store.js index 3f42c3b69..ab1efc95a 100644 --- a/apps/web/src/common/store.js +++ b/apps/web/src/common/store.js @@ -1,13 +1,25 @@ -import produce from "immer"; +import produce, { immerable } from "immer"; import create from "zustand"; function immer(config) { return function(set, get, api) { - return config(fn => set(produce(fn)), get, api); + const obj = config( + fn => + set(() => + produce(get(), state => { + fn(state); + }) + ), + get, + api + ); + obj[immerable] = true; + return obj; }; } function createStore(store) { + store = store.new ? store.new.bind(store) : store; return create(immer(store)); }