package com.axzae.homeassistant.fragment;

import android.app.Activity;
import android.app.Application;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;

import com.axzae.homeassistant.AppController;
import com.axzae.homeassistant.MainActivity;
import com.axzae.homeassistant.model.HomeAssistantServer;
import com.axzae.homeassistant.model.rest.CallServiceRequest;
import com.crashlytics.android.Crashlytics;

public class BaseFragment extends Fragment {

    public void setSubtitle(String title) {
        AppCompatActivity activity = (AppCompatActivity) getActivity();
        if (activity != null) {
            ActionBar actionBar = activity.getSupportActionBar();
            if (actionBar != null) {
                actionBar.setSubtitle(title);
            }
        }
    }

    public AppController getAppController() {
        Application app = getActivity().getApplication();
        if (app instanceof AppController) {
            return (AppController) app;
        }
        throw new RuntimeException("Unsupported Activity");
    }

    public void callService(final String domain, final String service, CallServiceRequest serviceRequest) {
        Activity app = getActivity();
        if (app instanceof MainActivity) {
            ((MainActivity) app).callService(domain, service, serviceRequest);
            return;
        }
        throw new RuntimeException("Unsupported Activity");
    }

    public boolean isActiveFragment() {
        Activity app = getActivity();
        if (app instanceof MainActivity) {
            return ((MainActivity) app).getCurrentEntityFragment() == this;
        }

        if (app == null) {
            Crashlytics.logException(new RuntimeException("Null Activity"));
        }
        return false;
        //throw new RuntimeException("Unsupported Activity");
    }

    public void showToast(String message) {
        Activity app = getActivity();
        if (app instanceof MainActivity) {
            ((MainActivity) app).showToast(message);
            return;
        }
        throw new RuntimeException("Unsupported Activity");
    }

    public HomeAssistantServer getServer() {
        Activity app = getActivity();
        if (app instanceof MainActivity) {
            return ((MainActivity) app).getServer();
        }
        throw new RuntimeException("Unsupported Activity");
    }

}