package com.jdroid.android.firebase.fcm;
import android.app.Activity;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceGroup;
import com.google.firebase.messaging.RemoteMessage;
import com.jdroid.android.debug.PreferencesAppender;
import com.jdroid.java.collections.Lists;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class FcmDebugPrefsAppender extends PreferencesAppender {
private Map<FcmMessage, Map<String, String>> fcmMessagesMap;
public FcmDebugPrefsAppender(Map<FcmMessage, Map<String, String>> fcmMessagesMap) {
this.fcmMessagesMap = fcmMessagesMap;
}
@Override
public int getNameResId() {
return R.string.jdroid_fcmSettings;
}
@Override
public void initPreferences(Activity activity, PreferenceGroup preferenceGroup) {
ListPreference preference = new ListPreference(activity);
preference.setTitle(R.string.jdroid_emulateFcmMessageTitle);
preference.setDialogTitle(R.string.jdroid_emulateFcmMessageTitle);
preference.setSummary(R.string.jdroid_emulateFcmMessageDescription);
List<CharSequence> entries = Lists.newArrayList();
for (FcmMessage entry : fcmMessagesMap.keySet()) {
entries.add(entry.getMessageKey());
}
preference.setEntries(entries.toArray(new CharSequence[0]));
preference.setEntryValues(entries.toArray(new CharSequence[0]));
preference.setPersistent(false);
preference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
for (Entry<FcmMessage, Map<String, String>> entry : fcmMessagesMap.entrySet()) {
if (entry.getKey().getMessageKey().equals(newValue.toString())) {
RemoteMessage.Builder builder = new RemoteMessage.Builder("to");
if (entry.getValue() != null) {
for(Map.Entry<String, String> each : entry.getValue().entrySet()) {
builder.addData(each.getKey(), each.getValue());
}
}
entry.getKey().handle(builder.build());
break;
}
}
return false;
}
});
preferenceGroup.addPreference(preference);
Preference registerDevicePreference = new Preference(activity);
registerDevicePreference.setTitle(R.string.jdroid_registerDeviceTitle);
registerDevicePreference.setSummary(R.string.jdroid_registerDeviceTitle);
registerDevicePreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
new FcmRegistrationCommand().start(true);
return true;
}
});
preferenceGroup.addPreference(registerDevicePreference);
}
@Override
public Boolean isEnabled() {
return (fcmMessagesMap != null) && !fcmMessagesMap.isEmpty();
}
}