oneframe-react
Version:
Oneframe React ## Components, Hooks, Helper Functions & State Management
87 lines (86 loc) • 4.28 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_waterfall_1 = __importDefault(require("react-waterfall"));
const action_1 = require("./action");
const lodash_1 = require("lodash");
const fetch_1 = require("./fetch");
const utility_1 = require("../utility");
const Toast_1 = __importDefault(require("../components/Toast"));
exports.default = (initialState) => {
const { Provider, connect, actions, getState } = react_waterfall_1.default(Object.assign(Object.assign({}, action_1.config), { initialState: utility_1.initialData(initialState) }));
function krax(options) {
return __awaiter(this, void 0, void 0, function* () {
let confirmStatus = true;
//confirm
if (options && options.hasOwnProperty('confirm')) {
const confirmResult = yield Toast_1.default({
message: '',
theme: 'light',
overlay: true,
position: 'center',
messageType: 'show',
confirmMessage: options.confirm,
});
confirmStatus = confirmResult.confirm;
if (!confirmResult) {
return new Promise(resolve => {
setTimeout(() => {
resolve(utility_1.defaultSetParameters);
}, options.sleep || 0);
});
}
}
// loading
yield actions.loading(utility_1.firstTimeData(getState(), options));
let setParametersData = utility_1.defaultSetParameters;
if (options && options.hasOwnProperty('request') && options.request && confirmStatus) {
const fetchDataresult = yield fetch_1.kraxFetch(fetch_1.kraxFetchOptions(options.request));
setParametersData = Object.assign(Object.assign({}, setParametersData), { error: fetchDataresult.error, payload: fetchDataresult.data, statusCode: fetchDataresult.statusCode, headers: fetchDataresult.headers, onSuccess: options.onSuccess, onError: options.onError });
}
if (options && options.hasOwnProperty('payload') && options.payload && confirmStatus) {
setParametersData = Object.assign(Object.assign({}, setParametersData), { payload: options.payload, statusCode: 200, onSuccess: options.onSuccess, onError: options.onError });
}
const store = Object.assign(Object.assign({}, setParametersData), { currentName: options.name });
yield actions.setData(store);
return new Promise(resolve => {
setTimeout(() => {
resolve(lodash_1.omit(store, ['currentName', 'onSuccess', 'onError']));
}, options.sleep || 0);
});
});
}
function reset(resetPath) {
return __awaiter(this, void 0, void 0, function* () {
let newStore = yield getState();
resetPath.forEach((item) => {
newStore = lodash_1.set(newStore, item, {
loading: false,
error: null,
payload: {},
statusCode: null,
});
});
actions.reset(newStore);
});
}
return {
Provider,
connect,
actions,
getState,
krax,
reset,
};
};
;