package com.ambergleam.android.photogallery;
import android.app.Application;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import com.ambergleam.android.photogallery.manager.BroadcastManager;
import com.ambergleam.android.photogallery.manager.DataManager;
import com.parse.Parse;
import com.parse.ParseACL;
import com.parse.ParseUser;
import javax.inject.Inject;
import dagger.ObjectGraph;
import timber.log.Timber;
public class BaseApplication extends Application {
@Inject BroadcastManager mBroadcastManager;
private ObjectGraph mObjectGraph;
public static BaseApplication get(Context context) {
return (BaseApplication) context.getApplicationContext();
}
@Override
public void onCreate() {
super.onCreate();
setupDagger();
setupTimber();
setupParse();
registerConnectionUpdateReceiver();
}
private void setupDagger() {
mObjectGraph = ObjectGraph.create(getModule());
inject(this);
}
private void setupTimber() {
Timber.plant(new Timber.DebugTree());
}
private void setupParse() {
Parse.enableLocalDatastore(this);
Parse.initialize(this, BaseConstants.PARSE_APP_ID, BaseConstants.PARSE_CLIENT_KEY);
ParseUser.enableAutomaticUser();
ParseACL defaultACL = new ParseACL();
ParseACL.setDefaultACL(defaultACL, true);
DataManager.registerParseObjects();
}
private void registerConnectionUpdateReceiver() {
IntentFilter connectionFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
mBroadcastManager.sendConnectionUpdate();
}
}, connectionFilter);
}
public final void inject(Object object) {
mObjectGraph.inject(object);
}
public Object getModule() {
return new BaseModule(this);
}
}