2016-11-18 16:49:51 +02:00
package im.status.ethereum ;
2016-03-23 16:48:26 +02:00
2017-08-07 14:21:07 +02:00
import android.content.Context ;
2016-06-08 12:43:02 +02:00
import android.app.AlertDialog ;
2017-08-06 23:46:43 +02:00
import android.app.ActivityManager ;
2016-06-08 12:43:02 +02:00
import android.content.DialogInterface ;
import android.content.DialogInterface.OnCancelListener ;
2016-07-20 12:03:05 +03:00
import android.content.DialogInterface.OnClickListener ;
2017-08-07 14:21:07 +02:00
import android.support.multidex.MultiDexApplication ;
import android.os.Looper ;
import android.util.Log ;
import android.app.AlertDialog ;
import android.content.DialogInterface ;
import android.content.DialogInterface.OnCancelListener ;
import android.content.DialogInterface.OnClickListener ;
2016-06-16 07:23:11 +03:00
import android.content.Intent ;
2016-06-21 12:03:39 +03:00
import android.content.res.Configuration ;
2016-07-20 12:03:05 +03:00
import android.os.Bundle ;
import com.facebook.react.ReactActivity ;
2016-11-15 13:43:48 +02:00
import com.cboy.rn.splashscreen.SplashScreen ;
2017-05-10 19:42:52 +03:00
import com.testfairy.TestFairy ;
2016-06-01 11:41:50 +03:00
2016-07-20 12:03:05 +03:00
import java.util.Properties ;
2016-07-18 19:29:51 +03:00
2016-03-23 16:48:26 +02:00
public class MainActivity extends ReactActivity {
2017-08-06 23:46:43 +02:00
2017-08-07 14:21:07 +02:00
private static void registerUncaughtExceptionHandler ( final Context context ) {
2017-08-06 23:46:43 +02:00
final Thread . UncaughtExceptionHandler defaultUncaughtExceptionHandler = Thread . getDefaultUncaughtExceptionHandler ();
Thread . setDefaultUncaughtExceptionHandler ( new Thread . UncaughtExceptionHandler () {
@Override
public void uncaughtException ( final Thread thread , final Throwable t ) {
new Thread () {
@Override
public void run () {
Looper . prepare ();
2017-08-07 14:21:07 +02:00
new AlertDialog . Builder ( context )
2017-08-06 23:46:43 +02:00
. setTitle ( "Error" )
. setMessage ( t . toString ())
. setNegativeButton ( "Exit" , new DialogInterface . OnClickListener () {
public void onClick ( final DialogInterface dialog , final int id ) {
dialog . dismiss ();
defaultUncaughtExceptionHandler . uncaughtException ( thread , t );
}
}). show ();
Looper . loop ();
}
}. start ();
}
});
}
2017-08-07 14:21:07 +02:00
private ActivityManager getActivityManager () {
return ( ActivityManager ) this . getSystemService ( ACTIVITY_SERVICE );
}
private ActivityManager . MemoryInfo getAvailableMemory ( final ActivityManager activityManager ) {
final ActivityManager . MemoryInfo memoryInfo = new ActivityManager . MemoryInfo ();
2017-08-06 23:46:43 +02:00
activityManager . getMemoryInfo ( memoryInfo );
return memoryInfo ;
}
2016-09-07 20:35:04 +03:00
protected void configureStatus () {
2016-06-08 12:43:02 +02:00
// Required because of crazy APN settings redirecting localhost (found in GB)
2016-03-23 17:02:53 +02:00
Properties properties = System . getProperties ();
properties . setProperty ( "http.nonProxyHosts" , "localhost|127.0.0.1" );
properties . setProperty ( "https.nonProxyHosts" , "localhost|127.0.0.1" );
}
2016-06-08 12:43:02 +02:00
@Override
protected void onCreate ( Bundle savedInstanceState ) {
2017-08-07 14:21:07 +02:00
// Make sure we get an Alert for every uncaught exceptions
registerUncaughtExceptionHandler ( MainActivity . this );
// Report memory details for this application
final ActivityManager activityManager = getActivityManager ();
Log . v ( "RNBootstrap" , "Available system memory " + getAvailableMemory ( activityManager ). availMem + ", maximum usable application memory " + activityManager . getLargeMemoryClass () + "M" );
2017-08-06 23:46:43 +02:00
2016-11-15 13:43:48 +02:00
SplashScreen . show ( this );
2016-06-08 12:43:02 +02:00
super . onCreate ( savedInstanceState );
2017-08-09 18:30:08 +03:00
if ( BuildConfig . TESTFAIRY_ENABLED == "1" ) {
TestFairy . begin ( this , "969f6c921cb435cea1d41d1ea3f5b247d6026d55" );
}
2016-06-08 12:43:02 +02:00
2016-07-20 12:03:05 +03:00
if ( ! RootUtil . isDeviceRooted ()) {
2016-09-07 20:35:04 +03:00
configureStatus ();
2016-06-08 12:43:02 +02:00
} else {
2016-07-20 12:03:05 +03:00
AlertDialog dialog = new AlertDialog . Builder ( MainActivity . this )
. setMessage ( getResources (). getString ( R . string . root_warning ))
2016-06-08 12:43:02 +02:00
. setPositiveButton ( getResources (). getString ( R . string . root_okay ), new OnClickListener () {
@Override
public void onClick ( DialogInterface dialog , int which ) {
dialog . dismiss ();
2016-09-07 20:35:04 +03:00
configureStatus ();
2016-06-08 12:43:02 +02:00
}
2016-07-20 12:03:05 +03:00
})
. setNegativeButton ( getResources (). getString ( R . string . root_cancel ), new OnClickListener () {
2016-06-08 12:43:02 +02:00
@Override
public void onClick ( DialogInterface dialog , int which ) {
dialog . dismiss ();
MainActivity . this . finishAffinity ();
}
2016-07-20 12:03:05 +03:00
})
. setOnCancelListener ( new OnCancelListener () {
2016-06-08 12:43:02 +02:00
@Override
public void onCancel ( DialogInterface dialog ) {
dialog . dismiss ();
MainActivity . this . finishAffinity ();
}
2016-07-20 12:03:05 +03:00
})
. create ();
2016-06-08 12:43:02 +02:00
dialog . show ();
}
2016-03-23 17:02:53 +02:00
}
2016-06-16 07:23:11 +03:00
@Override
protected void onDestroy () {
super . onDestroy ();
}
2016-03-23 16:48:26 +02:00
/**
* Returns the name of the main component registered from JavaScript.
* This is used to schedule rendering of the component.
*/
@Override
protected String getMainComponentName () {
2016-05-19 18:32:38 +02:00
return "StatusIm" ;
2016-03-23 16:48:26 +02:00
}
2016-06-21 12:03:39 +03:00
@Override
public void onConfigurationChanged ( Configuration newConfig ) {
super . onConfigurationChanged ( newConfig );
Intent intent = new Intent ( "onConfigurationChanged" );
intent . putExtra ( "newConfig" , newConfig );
this . sendBroadcast ( intent );
}
2016-03-23 16:48:26 +02:00
}