UNPKG

oneframe-react

Version:

Oneframe React ## Components, Hooks, Helper Functions & State Management

87 lines (86 loc) 4.28 kB
"use strict"; 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, }; };