Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { LOGIN_START, LOGIN_SUCCESS, LOGIN_ERROR, LOGIN_UNCHECK, ROOT_PROVIDERS } from './ActionTypes';
- import { AsyncStorage } from 'react-native';
- import request from '../net/Fetch';
- import Constants from '../utils/Constants';
- import { NavigationAction } from '../navigators/NavigatorService';
- import { saveCategories, getCategories, saveRechargeProviders, clearTables, getProviders } from '../db/DatabaseHelper';
- import { ImageCacheManager } from 'react-native-cached-image';
- export const loginStart = pin => {
- return async (dispatch, getState) => {
- const { loading } = getState();
- if (loading) return;
- dispatch({ type: LOGIN_START });
- try {
- const body = {
- Pin: pin,
- AppVersion: ''
- };
- const response = await request(`${Constants.baseUrl}User/Login`, body);
- const responseStatus = await response.status;
- LOG(responseStatus);
- const responseBody = await response.json();
- LOG(responseBody);
- if (responseStatus === 200) {
- await AsyncStorage.setItem('@TopUpStore:Token', responseBody.Token);
- await AsyncStorage.setItem(
- '@TopUpStore:UserGuid',
- responseBody.UserGuid
- );
- await AsyncStorage.setItem('@TopUpStore:Login', responseBody.Login);
- await AsyncStorage.setItem(
- '@TopUpStore:ExpiredAt',
- responseBody.ExpiredAt + ''
- );
- await AsyncStorage.setItem(
- '@TopUpStore:TuaCode',
- (responseBody.TuaCode = '')
- );
- await checkProviders(responseBody.Version, dispatch);
- const providers = await providersToStore();
- dispatch({
- type: ROOT_PROVIDERS,
- payload: { providers }
- });
- dispatch({
- type: LOGIN_SUCCESS,
- payload: {}
- });
- dispatch(NavigationAction('Tabs'));
- }
- } catch (error) {
- LOG(error);
- dispatch({
- type: LOGIN_ERROR,
- payload: `Failed to login with ${error}`
- });
- }
- };
- };
- export const uncheckClearPin = () => {
- return dispatch => {
- dispatch({ type: LOGIN_UNCHECK });
- };
- };
- const checkProviders = async (version) => {
- const categories = await getCategories();
- const ver = version + '';
- const localVersion = await AsyncStorage.getItem('@TopUpStore:Version');
- if (categories.length <= 0 || localVersion === null || ver !== localVersion || __DEV__) {
- await AsyncStorage.setItem('@TopUpStore:Version', ver);
- ImageCacheManager()
- .clearCache()
- .then();
- await clearTables();
- await loadProviders();
- await loadRechargeProviders();
- }
- };
- const loadProviders = async () => {
- const response = await request(
- `${Constants.baseUrl}Provider/ListWithFullInfo`,
- {},
- {},
- 'GET'
- );
- const responseStatus = await response.status;
- if (responseStatus === 200) {
- const responseBody = await response.json();
- await saveCategories(responseBody);
- }
- };
- const loadRechargeProviders = async () => {
- const response = await request(`${Constants.baseUrl}Provider/RechargeProviders`);
- const responseStatus = await response.status;
- if (responseStatus === 200) {
- const responseBody = await response.json();
- await saveRechargeProviders(responseBody);
- }
- };
- const providersToStore = async() => {
- let providers = {};
- const providersFromDb = await getProviders();
- providersFromDb.forEach(provider => {
- providers[provider.Id] = {Name: provider.Name, IconCircle: provider.IconCircle};
- });
- return providers;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement