package cgeo.geocaching.connector.oc; import cgeo.geocaching.connector.AbstractLoggingManager; import cgeo.geocaching.connector.ImageResult; import cgeo.geocaching.connector.LogResult; import cgeo.geocaching.enumerations.StatusCode; import cgeo.geocaching.log.LogCacheActivity; import cgeo.geocaching.log.LogType; import cgeo.geocaching.log.TrackableLog; import cgeo.geocaching.models.Geocache; import cgeo.geocaching.models.Image; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import java.util.Calendar; import java.util.Collections; import java.util.List; public class OkapiLoggingManager extends AbstractLoggingManager { @NonNull private final OCApiLiveConnector connector; @NonNull private final Geocache cache; @NonNull private final LogCacheActivity activity; private boolean hasLoaderError = true; public OkapiLoggingManager(@NonNull final LogCacheActivity activity, @NonNull final OCApiLiveConnector connector, @NonNull final Geocache cache) { this.connector = connector; this.cache = cache; this.activity = activity; } @Override public final void init() { if (connector.isLoggedIn()) { hasLoaderError = false; } activity.onLoadFinished(); } @Override @NonNull public final LogResult postLog(@NonNull final LogType logType, @NonNull final Calendar date, @NonNull final String log, @Nullable final String logPassword, @NonNull final List<TrackableLog> trackableLogs) { final LogResult result = OkapiClient.postLog(cache, logType, date, log, logPassword, connector); connector.login(null, null); return result; } @Override @NonNull public final ImageResult postLogImage(final String logId, final Image image) { return new ImageResult(StatusCode.LOG_POST_ERROR, ""); } @Override @NonNull public List<LogType> getPossibleLogTypes() { if (hasLoaderError) { return Collections.emptyList(); } return connector.getPossibleLogTypes(cache); } @Override public boolean hasLoaderError() { return hasLoaderError; } }