import AsyncStorage from "@react-native-async-storage/async-storage";
import { applyMiddleware, createStore, compose, combineReducers } from "redux";
import { createLogger } from "redux-logger";
import thunk from "redux-thunk";
import { persistStore, persistReducer } from "redux-persist";
import autoMergeLevel2 from "redux-persist/lib/stateReconciler/autoMergeLevel2";
import publicApi from "./reducers/public";
import user from "./reducers/user";
import book from "./reducers/book";
import blog from "./reducers/blog";
import product from "./reducers/product";
import faq from "./reducers/faq";
import file from "./reducers/file";
import userFactor from "./reducers/userFactor";
import userProduct from "./reducers/userProduct";
import qr from './reducers/qr';

const persistConfig = {
  key: "root",
  storage: AsyncStorage,
  stateReconciler: autoMergeLevel2, // see "Merge Process" section for details.
  whitelist: ["profile"],
};

const initialState = {};

const middleWare = [thunk];

// const loggerMiddleware = createLogger({
//   predicate: () => process.env.NODE_ENV === "development",
// });
// middleWare.push(loggerMiddleware);

const store = createStore(
  persistReducer(
    persistConfig,
    combineReducers({
      publicApi,
      user,
      book,
      blog,
      product,
      faq,
      file,
      userFactor,
      userProduct,
      qr
    })
  ),
  initialState,
  compose(applyMiddleware(...middleWare))
);

const persistor = persistStore(store);

const ReactNative = require("react-native");
try {
  ReactNative.I18nManager.allowRTL(true);
  //  enableScreens();
} catch (e) {
  // console.log(e);
}

// console.disableYellowBox = true;

export default store;