Comparing version 0.0.7 to 0.0.8
@@ -49,4 +49,4 @@ "use strict"; | ||
var state = store[key]; | ||
var setState = function (promise) { return __awaiter(void 0, void 0, void 0, function () { | ||
var data, error_1; | ||
var setState = function (promiseOrCallback) { return __awaiter(void 0, void 0, void 0, function () { | ||
var callback, data, promise, data, error_1; | ||
return __generator(this, function (_a) { | ||
@@ -58,13 +58,23 @@ switch (_a.label) { | ||
case 1: | ||
_a.trys.push([1, 3, , 4]); | ||
return [4 /*yield*/, promise]; | ||
_a.trys.push([1, 6, , 7]); | ||
if (!(typeof promiseOrCallback === 'function')) return [3 /*break*/, 3]; | ||
callback = promiseOrCallback; | ||
return [4 /*yield*/, callback(state)]; | ||
case 2: | ||
data = _a.sent(); | ||
setStore({ prop: key, payload: { state: 'completed', data: data } }); | ||
return [3 /*break*/, 4]; | ||
return [3 /*break*/, 5]; | ||
case 3: | ||
promise = promiseOrCallback; | ||
return [4 /*yield*/, promise]; | ||
case 4: | ||
data = _a.sent(); | ||
setStore({ prop: key, payload: { state: 'completed', data: data } }); | ||
_a.label = 5; | ||
case 5: return [3 /*break*/, 7]; | ||
case 6: | ||
error_1 = _a.sent(); | ||
setStore({ prop: key, payload: { state: 'failed', error: error_1 } }); | ||
return [3 /*break*/, 4]; | ||
case 4: return [2 /*return*/]; | ||
return [3 /*break*/, 7]; | ||
case 7: return [2 /*return*/]; | ||
} | ||
@@ -71,0 +81,0 @@ }); |
@@ -8,3 +8,3 @@ /// <reference types="react" /> | ||
*/ | ||
declare const useStore: <T, K extends keyof T>(context: import("react").Context<IContext<T>>, key: K) => [T[K], (value: T[K]) => void]; | ||
declare const useStore: <T, K extends keyof T>(context: import("react").Context<IContext<T>>, key: K) => [T[K], (value: T[K] | ((currentValue: T[K]) => T[K])) => void]; | ||
export { useStore }; |
@@ -13,4 +13,11 @@ "use strict"; | ||
var state = store[key]; | ||
var setState = function (value) { | ||
setStore({ prop: key, payload: value }); | ||
var setState = function (valueOrCallback) { | ||
if (typeof valueOrCallback === 'function') { | ||
var callback = valueOrCallback; | ||
setStore({ prop: key, payload: callback(state) }); | ||
} | ||
else { | ||
var value = valueOrCallback; | ||
setStore({ prop: key, payload: value }); | ||
} | ||
}; | ||
@@ -17,0 +24,0 @@ return [state, setState]; |
{ | ||
"name": "restater", | ||
"version": "0.0.7", | ||
"version": "0.0.8", | ||
"description": "Tiny hook-based state management tool for React", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
22710
345