STApplication.java 3.06 KB
package com.styleteq.app;

import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import androidx.annotation.LayoutRes;
import androidx.multidex.MultiDexApplication;
import android.view.LayoutInflater;
import android.view.View;

import com.crashlytics.android.Crashlytics;
import com.crashlytics.android.core.CrashlyticsCore;
import com.facebook.FacebookSdk;
import com.facebook.appevents.AppEventsLogger;
import com.styleteq.app.firebase.STFirebase;
import com.styleteq.app.helpers.STActivity;
import com.styleteq.app.helpers.Utils;
import com.styleteq.app.models.Session;

import io.fabric.sdk.android.Fabric;

public class STApplication extends MultiDexApplication {
    private static boolean activityVisible;
    private static STApplication instance;
    private STActivity currentActivity;

    public static STApplication getInstance() {
        return instance;
    }

    public static Context applicationContext() {
        return instance.getApplicationContext();
    }

    public static STActivity getCurrentActivity() {
        return getInstance().getActivity();
    }

    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
        // Set up Crashlytics, disabled for debug builds
        Crashlytics crashlyticsKit = new Crashlytics.Builder()
                .core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
                .build();

        // Initialize Fabric with the debug-disabled crashlytics.
        Fabric.with(this, crashlyticsKit);
        STFirebase.subscribe();
        FacebookSdk.sdkInitialize(getApplicationContext());
        AppEventsLogger.activateApp(this);
        Session.get().setNotificationId(0);
    }

    public void setActivity(STActivity activity) {
        currentActivity = activity;
    }

    public STActivity getActivity() {
        return currentActivity;
    }

    public static void newActivity(Class klass) {
        getCurrentActivity().startActivity(new Intent(getCurrentActivity(), klass));
    }

    public static void newActivity(Intent i) {
        getCurrentActivity().startActivity(i);
    }

    public static void newActivity(Class klass, Intent i) {
        i.setComponent(new ComponentName(getCurrentActivity(), klass));
        getCurrentActivity().startActivity(i);
    }

    public static LayoutInflater getLayoutInflater() {
        return (LayoutInflater) getInstance().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public static View inflate(@LayoutRes int resource) {
        return getLayoutInflater().inflate(resource, null);
    }

    public static boolean isActivityVisible() {
        return activityVisible;
    }

    public static void activityResumed() {
        activityVisible = true;
        Session.get().startSession();
    }

    public static void activityPaused() {
        activityVisible = false;
        Session.get().pauseSession();
    }

    public static void promptLogin() {
        newActivity(new Intent(STApplication.getCurrentActivity(), LoginActivity.class).putExtra(Utils.PROMPT, true));
    }
}