package co.touchlab.droidconandroid;
import android.app.ActivityManager;
import android.app.Application;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import com.google.firebase.analytics.FirebaseAnalytics;
import com.google.firebase.crash.FirebaseCrash;
import com.zendesk.sdk.model.access.AnonymousIdentity;
import com.zendesk.sdk.model.access.Identity;
import com.zendesk.sdk.network.impl.ZendeskConfig;
import org.apache.commons.io.IOUtils;
import java.io.IOException;
import co.touchlab.android.threading.eventbus.EventBusExt;
import co.touchlab.droidconandroid.alerts.AlertManagerKt;
import co.touchlab.droidconandroid.presenter.AppManager;
import co.touchlab.droidconandroid.presenter.PlatformClient;
import co.touchlab.droidconandroid.tasks.UpdateAlertsTask;
import retrofit.client.Client;
/**
* Created by kgalligan on 6/28/14.
*/
public class DroidconApplication extends Application
{
public static String getCurrentProcessName(Context context) {
// Log.d(TAG, "getCurrentProcessName");
int pid = android.os.Process.myPid();
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningAppProcessInfo processInfo : manager.getRunningAppProcesses())
{
// Log.d(TAG, processInfo.processName);
if (processInfo.pid == pid)
return processInfo.processName;
}
return "";
}
@Override
public void onCreate()
{
super.onCreate();
EventBusExt.getDefault().register(this);
String currentProcessName = getCurrentProcessName(this);
Log.i(DroidconApplication.class.getSimpleName(), "currentProcessName: "+ currentProcessName );
if(!currentProcessName.contains("background_crash"))
{
PlatformClient platformClient = new co.touchlab.droidconandroid.presenter.PlatformClient()
{
@Override
public Client makeClient()
{
return null;
}
@Override
public String baseUrl()
{
return BuildConfig.BASE_URL;
}
@Override
public Integer getConventionId()
{
return Integer.parseInt(DroidconApplication.this.getString(R.string.convention_id));
}
@Override
public void log(String s)
{
FirebaseCrash.log(s);
}
@Override
public void logException(Throwable t)
{
FirebaseCrash.report(t);
}
@Override
public void logEvent(String name, String... params)
{
Bundle bundle = new Bundle();
for(int i=0; i<params.length; )
{
bundle.putString(params[i], params[i+1]);
i= i+2;
}
FirebaseAnalytics.getInstance(DroidconApplication.this)
.logEvent(name, bundle);
}
@Override
public String getString(String id)
{
return DroidconApplication.this.getString(
getResources().getIdentifier(id, "string", getPackageName()));
}
};
AppManager.initContext(this, platformClient, new AppManager.LoadDataSeed()
{
@Override
public String dataSeed()
{
try
{
return IOUtils.toString(getAssets().open("dataseed.json"));
}
catch(IOException e)
{
throw new RuntimeException(e);
}
}
});
ZendeskConfig.INSTANCE.init(this,
BuildConfig.zendeskurl,
BuildConfig.zendeskappid,
BuildConfig.zendeskauthid);
Identity anonymousIdentity = new AnonymousIdentity.Builder().build();
ZendeskConfig.INSTANCE.setIdentity(anonymousIdentity);
}
}
@SuppressWarnings("unused")
public void onEventMainThread(UpdateAlertsTask task)
{
AlertManagerKt.scheduleAlert(this, task.nextEvent);
}
}