Die native React-App funktioniert im Debug-Modus, aber nicht im Release-Modus unter iOSIOS

Programmierung für iOS
Anonymous
 Die native React-App funktioniert im Debug-Modus, aber nicht im Release-Modus unter iOS

Post by Anonymous »

Ich habe eine App auf React Native. Der Debug-Modus funktioniert auf iOS. Der Release-Modus funktioniert jedoch nicht. Ich habe versucht, die Optimierungsstufe zu ändern, aber es hat nicht geholfen. Das Problem ist, dass ich keinen Fehler sehe. Funktioniert einfach nicht. Und ich kann die Release-Version der App nicht debuggen. Wie kann dieses Problem gelöst werden?

Als letzte Änderung haben wir die folgende Saga hinzugefügt. Wenn wir den Aufruf dieser Saga entfernen, funktioniert es

Code: Select all

import { select, take, takeLatest, call, put, fork, race } from 'redux-saga/effects';
import R from 'ramda';
import V from 'o-validator';
import * as actionCreators from './actions';
import { redirectTo, showModalError, showModal, showOtp, closeOtp, errorOtp, loader, keychainSet } from '../../../actions/app-actions';
import { storeSession, refreshSession } from '../../../actions/session-actions';
import I18n from 'react-native-i18n';
import {
KEYCHAIN_RESET,
KEYCHAIN_GET,
KEYCHAIN_RESULT
} from '../../../constants/action-types';

import { validatePassword, createCustomError, serverError } from '../../../services/utils';

const delay = (ms) => new Promise(resolve =>  setTimeout(resolve, ms))

export function * ChangePasswordWatcher( api, action ) {
yield fork( ChangePasswordFormWatcher, api, action );
}

export function * ChangePasswordFormWatcher(api, action){
while (true) {
yield race({
changePasswordProcess: call(ChangePasswordStart, api),
cancel: take(['CHANGE_PASSWORD_PASSWORD_RESET'])
});
//yield put( loader('hide') );
yield put( loader('hide') );

}
}

/**
* Change Password Sagas starter
*
* @param {function} api - api object
* @param {object} action - action from dispatch
* @returns
*/
export function * ChangePasswordStart(api, action) {
try {
while (true) {
const { formData } = yield take('CHANGE_PASSWORD_FORM_SUBMIT');
let oldPassword = formData.oldPassword;
let newPassword = formData.newPassword;
let newPasswordConfirmation = formData.newPasswordConfirmation;

yield put({
type: 'CHANGE_PASSWORD_FORM_VALID'
});

const validate = validateForm( 'changePasswordForm', formData );
if ( validate.valid ) {
yield put( actionCreators.submitChangePasswordFormValid() );
yield put( loader('show') );

let newPasswordResponse = yield call( api.setChangePassword, oldPassword, newPassword);
yield put( loader('hide') );
if ( !newPasswordResponse.ok ) {

let errors = serverError(newPasswordResponse);
console.log(errors);
console.log('errors newPasswordResponse');

yield put( showModalError({ error: errors }));
yield put( actionCreators.submitNewPasswordFormFailed( errors ) );

//  return false;
}
else {

yield put({
type: KEYCHAIN_GET,
// resultAction: ''
});

const keychain = yield take(KEYCHAIN_RESULT);

// Save to Keychain
yield put( keychainSet({
login: keychain.login || false,
password: keychain.password || false
}) );

// final screen
yield put( redirectTo('thankyou') );
yield call( delay, 300 );
yield put( actionCreators.changePasswordResetState() );
}

}
else {
yield put( showModalError({ error: validate.errors }));
yield put( actionCreators.submitChangePasswordFormFailed( validate.errors ));
yield put( actionCreators.changePasswordFailed() );

//                      yield put( actionCreators.submitFinFormFailed( ret.errors ) );
//                      yield put( actionCreators.registrationFailed());
}
// Reset login
//  yield call( delay, 300 );
//  yield put( actionCreators.resetState() );

}

} catch (e) {
console.log(e);
}

}

export function validateForm( formKey, formData ) {
let
ret = {
valid: true,
errors: false
},
schema: {};

switch ( formKey ) {
case 'changePasswordForm':
schema = {
oldPassword: V.required( validatePassword ),
newPassword:  V.required( validatePassword ),
newPasswordConfirmation: V.required( R.equals( formData.newPassword ) )
};
break;

default:
break;
}

ret.valid = V.validate( schema, formData );

if ( !ret.valid ) {
ret.errors = V.getErrors( schema, formData );
ret.errors = R.zipObj( R.pluck('property', ret.errors), ret.errors );
}

console.log('isValid: ' + ret.valid.toString());

return ret;
}
Das Kommentieren aller Console.log-Anweisungen hat nicht geholfen

Code: Select all

import { select, take, takeLatest, call, put, fork, race } from 'redux-saga/effects';
import R from 'ramda';
import V from 'o-validator';
import * as actionCreators from './actions';
import { redirectTo, showModalError, showModal, showOtp, closeOtp, errorOtp, loader, keychainSet } from '../../../actions/app-actions';
import { storeSession, refreshSession } from '../../../actions/session-actions';
import I18n from 'react-native-i18n';
import {
KEYCHAIN_RESET,
KEYCHAIN_GET,
KEYCHAIN_RESULT
} from '../../../constants/action-types';

import { validatePassword, createCustomError, serverError } from '../../../services/utils';

const delay = (ms) => new Promise(resolve =>  setTimeout(resolve, ms))

export function * changePasswordScreenWatcher( api, action ) {
yield fork( ChangePasswordFormWatcher, api, action );
}

export function * ChangePasswordFormWatcher(api, action){
while (true) {
yield race({
changePasswordProcess: call(ChangePasswordStart, api),
cancel: take(['CHANGE_PASSWORD_PASSWORD_RESET'])
});
//yield put( loader('hide') );
yield put( loader('hide') );

}
}

/**
* Change Password Sagas starter
*
* @param {function} api - api object
* @param {object} action - action from dispatch
* @returns
*/
export function * ChangePasswordStart(api, action) {
try {
while (true) {
const { formData } = yield take('CHANGE_PASSWORD_FORM_SUBMIT');
let oldPassword = formData.oldPassword;
let newPassword = formData.newPassword;
let newPasswordConfirmation = formData.newPasswordConfirmation;

yield put({
type: 'CHANGE_PASSWORD_FORM_VALID'
});

const validate = validateForm( 'changePasswordForm', formData );
if ( validate.valid ) {
yield put( actionCreators.submitChangePasswordFormValid() );
yield put( loader('show') );

let newPasswordResponse = yield call( api.setChangePassword, oldPassword, newPassword);
yield put( loader('hide') );
if ( !newPasswordResponse.ok ) {

let errors = serverError(newPasswordResponse);
//console.log(errors);
//console.log('errors newPasswordResponse');

yield put( showModalError({ error: errors }));
yield put( actionCreators.submitNewPasswordFormFailed( errors ) );

//  return false;
}
else {

yield put({
type: KEYCHAIN_GET,
// resultAction: ''
});

const keychain = yield take(KEYCHAIN_RESULT);

// Save to Keychain
yield put( keychainSet({
login: keychain.login || false,
password: keychain.password || false
}) );

// final screen
yield put( redirectTo('thankyou') );
yield call( delay, 300 );
yield put( actionCreators.changePasswordResetState() );
}

}
else {
yield put( showModalError({ error: validate.errors }));
yield put( actionCreators.submitChangePasswordFormFailed( validate.errors ));
yield put( actionCreators.changePasswordFailed() );

//                      yield put( actionCreators.submitFinFormFailed( ret.errors ) );
//                      yield put( actionCreators.registrationFailed());
}
// Reset login
//  yield call( delay, 300 );
//  yield put( actionCreators.resetState() );

}

} catch (e) {
//console.log(e);
}

}

export function validateForm( formKey, formData ) {
let ret = {
valid: true,
errors: false
};

switch ( formKey ) {
case 'changePasswordForm':
schema = {
oldPassword: V.required( validatePassword ),
newPassword: V.required( validatePassword ),
newPasswordConfirmation:  V.required( R.equals( formData.newPassword ) )
};
break;

default:
break;
}

ret.valid = V.validate( schema, formData );

if ( !ret.valid ) {
ret.errors = V.getErrors( schema, formData );
ret.errors = R.zipObj( R.pluck('property', ret.errors), ret.errors );
}

//console.log('isValid: ' + ret.valid.toString());

return ret;
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post