bukopin-redemption-client-r.../src/common/stores/appstate.js
2019-01-31 13:48:24 +07:00

185 lines
5.6 KiB
JavaScript

import {observable, action, autorun, computed} from 'mobx';
import {Http} from "../util/http";
import {Authentication} from "./authenticaton";
import GlobalUI from './global_ui';
import Agent from './agent';
import Employee from './employee';
import Reward from './reward';
import User from './user';
import PackageSchedules from './package_schedules';
import PackagePaymentMethod from './package_payment_method';
import Notification from './notification';
import Dashboard from './dashboard';
import Bank from './bank';
import PaymentMethod from './payment_method.js';
import Currency from './currency.js';
import PackagesService from './package_service.js';
import Packages from './packages.js';
import CustomerStore from "./customer";
import OrderStore from "./order";
import TransportationModule from './transportationStore';
import DepositStore from "./deposit";
import WithdrawStore from "./withdraw";
import Task from './task';
import Transaction from './transaction';
// import {Firebase} from './firebase';
import AirlinesDomestic from "./airlines_domestic";
import Airports from "./airports";
import Categories from './categories';
import Recipes from './recipes';
import Help from './help';
import ContentManager from './content_manager';
import Setting from './setting';
import Roles from './roles';
import Commission from './commission';
import AppStore from './app';
import Airlines from './airlines';
import UserBanks from './user_banks';
import Profile from './profile';
import Stores from './stores';
import StoreList from './store_list';
import UserAddress from './user_address';
import { ItemStore } from './item';
import { MyStoreStore } from './my_store';
import { MyStoreItemStore } from './my_store_item';
import { ShippingMethodStore } from './shipping_method';
import {MyStoreShippingMethodStore} from "./my_store_shipping_method";
import {Messages} from "./message";
import {FeaturedItem} from './featured_item';
import {FeaturedStore} from './featured_store';
import EntitiesStore from "./entities";
import {CustomMenus} from './custom_menus';
import {FeaturedCategory} from "./featured_category";
import {FeaturedBanner} from "./featured_banner";
import {Tags} from './tags';
import Surf from './surf';
import Odoo from './odoo';
import Vouchers from './vouchers';
import {PurchasedItemStore} from "./purchased_item";
import WalletStore from "./wallet";
import {PurchasedItemVouchserStore} from "./purchased_item_voucher";
import {PlaceStore} from "./place";
export default class AppState {
http = new Http(this.token);
app = new AppStore(this);
auth = new Authentication(this);
bank = new Bank(this);
reward = new Reward(this);
agent = new Agent(this);
airlinesDomestic = new AirlinesDomestic(this);
airports = new Airports(this);
packageSchedules = new PackageSchedules(this);
packagePaymentMethod = new PackagePaymentMethod(this);
transportationStore = new TransportationModule(this);
currencyStore = new Currency(this);
employee = new Employee(this);
commission = new Commission(this);
airlines = new Airlines(this);
featured_item = new FeaturedItem(this);
featured_banner = new FeaturedBanner(this);
custom_menu = new CustomMenus(this);
featured_store = new FeaturedStore(this);
featured_category = new FeaturedCategory(this);
dashboard = new Dashboard(this);
paymentMethod = new PaymentMethod(this);
packages = new Packages(this);
packageServiceStore = new PackagesService(this);
user = new User(this);
roles = new Roles(this);
globalUI = new GlobalUI();
customer = new CustomerStore(this);
profile = new Profile(this);
category = new Categories(this);
recipes = new Recipes(this);
help = new Help(this);
contentManager = new ContentManager(this);
order = new OrderStore(this);
deposit = new DepositStore(this);
withdraw = new WithdrawStore(this);
task = new Task(this);
transaction = new Transaction(this);
setting = new Setting(this);
// firebase = new Firebase(this);
userBanks = new UserBanks(this);
stores = new Stores(this);
storeList = new StoreList(this);
vouchers = new Vouchers(this);
userAddress = new UserAddress(this);
item = new ItemStore(this);
myStore = new MyStoreStore(this);
myStoreItem = new MyStoreItemStore(this);
myStoreShippingMethod = new MyStoreShippingMethodStore(this);
shippingMethod = new ShippingMethodStore(this);
message = new Messages(this);
odoo = new Odoo(this);
entities = new EntitiesStore(this);
notification = new Notification(this);
tags = new Tags(this);
surf_turf = new Surf(this);
purchased_items = new PurchasedItemStore(this);
wallet = new WalletStore(this);
purchased_voucher = new PurchasedItemVouchserStore(this);
places = new PlaceStore(this);
constructor(initialState) {
this.token = initialState.token;
this.http.token = this.token;
if (typeof window !== 'undefined') {
if (!this.token) {
localStorage.removeItem('id_token');
} else {
localStorage.setItem('id_token', this.token);
this.user.getUserGeolocation();
}
}
if (this.token) {
this.loadDataAfterLogin();
}
}
@action
setLogin(status) {
this.isLoggedIn = status;
}
@action
setToken(token) {
this.token = token;
this.http.token = token;
localStorage.setItem('id_token', token);
}
@action
setUserData(data) {
// this.userData = data;
}
@action
addItem(item) {
this.items.push(item);
}
@action
loadDataAfterLogin() {
this.wallet.getData();
}
@computed get userData() {
const token = this.token;
if (!token) {
return {
user_id: '',
role: ''
}
}
let tokenData = JSON.parse(atob(token.split('.')[1]));
return tokenData;
}
};