package com.mvc.kinballwc.application;
import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;
import com.mvc.kinballwc.model.Match;
import com.mvc.kinballwc.model.MatchPeriod;
import com.mvc.kinballwc.model.MatchPoints;
import com.mvc.kinballwc.model.Player;
import com.mvc.kinballwc.model.Referee;
import com.mvc.kinballwc.model.Role;
import com.mvc.kinballwc.model.Team;
import com.parse.Parse;
import com.parse.ParseCrashReporting;
import com.parse.ParseException;
import com.parse.ParseInstallation;
import com.parse.ParseObject;
import com.parse.ParsePush;
import com.parse.SaveCallback;
/**
* Author: Mario Velasco Casquero
* Date: 23/6/15
* Email: m3ario@gmail.com
*/
public class App extends Application{
public static final String TAG = "App";
public static final String PARSE_APPLICATION_ID = "FCHZ57kyg8w90onvgWwSlooVix0rXhabgii5ogm9";
public static final String PARSE_CLIENT_KEY = "A1Tf4HM97nufDKb0A9IEWlyllwRJgcMV1TwDO0LK";
public static final int DEFAULT_REFRESH_TIME = 10;
public static final int MIN_REFRESH_TIME = 3;
public static final String SHARED_PREFERENCES = "Kin-Ball preferences";
public static final String PREF_USE_GCM = "prefUseGCM";
public static final String PREF_REFRESH_TIME = "prefTime";
private static Context context;
public static boolean allowEdit = false; // TODO
public static boolean useGCM = true;
public static int refreshTime;
@Override
public void onCreate() {
super.onCreate();
App.context = getApplicationContext();
getRefreshConfig();
initParse();
subscribePushNotifications();
}
protected void initParse() {
// Register your parse models here
ParseObject.registerSubclass(Team.class);
ParseObject.registerSubclass(Player.class);
ParseObject.registerSubclass(Match.class);
ParseObject.registerSubclass(MatchPoints.class);
ParseObject.registerSubclass(MatchPeriod.class);
ParseObject.registerSubclass(Role.class);
ParseObject.registerSubclass(Referee.class);
// Enable Crash Reporting
ParseCrashReporting.enable(this);
// Initialize the instance of Parse
Parse.initialize(this, PARSE_APPLICATION_ID, PARSE_CLIENT_KEY);
ParseInstallation.getCurrentInstallation().saveInBackground();
}
private void subscribePushNotifications() {
ParsePush.subscribeInBackground("", new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Log.d("com.parse.push", "successfully subscribed to the broadcast channel.");
} else {
Log.e("com.parse.push", "failed to subscribe for push", e);
}
}
});
}
public static Context getAppContext() {
return App.context;
}
public static void setRefreshConfig(boolean useGCM, int time) {
Log.d(TAG, "Setting refresh config, useGCM: " + useGCM + " time: " + refreshTime);
if (time < MIN_REFRESH_TIME) {
time = App.refreshTime;
}
SharedPreferences pref = context.getSharedPreferences(SHARED_PREFERENCES, MODE_PRIVATE);
pref.edit()
.putBoolean(PREF_USE_GCM, useGCM)
.putInt(PREF_REFRESH_TIME, time)
.apply();
App.useGCM = useGCM;
App.refreshTime = time;
}
private static void getRefreshConfig() {
SharedPreferences pref = context.getSharedPreferences(SHARED_PREFERENCES, MODE_PRIVATE);
App.useGCM = pref.getBoolean(PREF_USE_GCM, true);
App.refreshTime = pref.getInt(PREF_REFRESH_TIME, DEFAULT_REFRESH_TIME);
Log.d(TAG, "Getting refresh config, useGCM: " + useGCM + " time: " + refreshTime);
}
}