package io.filepicker; import android.net.Uri; import java.util.HashMap; import java.util.Map; import de.greenrobot.event.EventBus; import io.filepicker.events.FpFilesReceivedEvent; import io.filepicker.events.UploadFileErrorEvent; import io.filepicker.events.UploadProgressEvent; import io.filepicker.models.FPFile; /** * Created by maciejwitowski on 12/10/15. */ public class FilepickerCallbackHandler { Map<Uri, FilepickerCallback> callbacksMap = new HashMap<>(); public void addCallback(Uri uri, FilepickerCallback filepickerCallback) { // First callback so the handler must be registered in EventBus if (callbacksMap.size() == 0) { register(); } callbacksMap.put(uri, filepickerCallback); } @SuppressWarnings("unused") public void onEvent(FpFilesReceivedEvent event) { if (event == null) { return; } FPFile file = event.fpFiles.get(0); FilepickerCallback callback = callbacksMap.get(Uri.parse(file.getLocalPath())); if (callback != null) { callback.onFileUploadSuccess(file); } } @SuppressWarnings("unused") public void onEvent(UploadFileErrorEvent event) { if (event == null) { return; } FilepickerCallback callback = callbacksMap.get(event.getUri()); if (callback != null) { callback.onFileUploadError(new Exception( "Uri: " + event.getUri() + ", Error: " + event.error )); } } @SuppressWarnings("unused") public void onEvent(UploadProgressEvent event) { if (event == null) { return; } FilepickerCallback callback = callbacksMap.get(event.uri); if (callback != null) { callback.onFileUploadProgress(event.uri, event.progress); } } public void register() { EventBus.getDefault().register(this); } public void unregister() { callbacksMap.clear(); EventBus.getDefault().unregister(this); } }