package com.jdroid.android.firebase.fcm;
import android.os.Bundle;
import com.jdroid.android.activity.AbstractFragmentActivity;
import com.jdroid.android.activity.ActivityDelegate;
import com.jdroid.android.application.AbstractAppModule;
import com.jdroid.android.application.AbstractApplication;
import com.jdroid.android.debug.PreferencesAppender;
import java.util.List;
public abstract class AbstractFcmAppModule extends AbstractAppModule {
public static final String MODULE_NAME = AbstractFcmAppModule.class.getName();
public static AbstractFcmAppModule get() {
return (AbstractFcmAppModule)AbstractApplication.get().getAppModule(MODULE_NAME);
}
private FcmDebugContext fcmDebugContext;
private FcmMessageResolver fcmMessageResolver;
private FcmListenerResolver fcmListenerResolver;
private Boolean fcmInitialized = false;
public AbstractFcmAppModule() {
fcmMessageResolver = createFcmMessageResolver();
fcmListenerResolver = createFcmListenerResolver();
}
protected FcmDebugContext createFcmDebugContext() {
return new FcmDebugContext();
}
public FcmDebugContext getFcmDebugContext() {
synchronized (AbstractApplication.class) {
if (fcmDebugContext == null) {
fcmDebugContext = createFcmDebugContext();
}
}
return fcmDebugContext;
}
@Override
public List<PreferencesAppender> getPreferencesAppenders() {
return getFcmDebugContext().getPreferencesAppenders();
}
public FcmMessageResolver getFcmMessageResolver(String from) {
return fcmMessageResolver;
}
public abstract List<FcmSender> getFcmSenders();
public abstract FcmMessageResolver createFcmMessageResolver();
public FcmListenerResolver createFcmListenerResolver() {
return new FcmListenerResolver();
}
public FcmListenerResolver getFcmListenerResolver() {
return fcmListenerResolver;
}
@Override
public ActivityDelegate createActivityDelegate(AbstractFragmentActivity abstractFragmentActivity) {
return !fcmInitialized ? new ActivityDelegate(abstractFragmentActivity) {
@Override
public void onCreate(Bundle savedInstanceState) {
if (!fcmInitialized) {
startFcmRegistration(true);
fcmInitialized = true;
}
}
} : null;
}
protected List<String> getSubscriptionTopics() {
return null;
}
@Override
public void onInstanceIdTokenRefresh() {
startFcmRegistration(false);
}
@Override
public void onGooglePlayServicesUpdated() {
startFcmRegistration(false);
}
@Override
public void onInitializeGcmTasks() {
startFcmRegistration(false);
}
public void startFcmRegistration(Boolean updateLastActiveTimestamp) {
createFcmRegistrationCommand().start(updateLastActiveTimestamp);
}
protected FcmRegistrationCommand createFcmRegistrationCommand() {
return new FcmRegistrationCommand();
}
}