package org.cnodejs.android.md.presenter.implement; import android.app.Activity; import android.support.annotation.NonNull; import org.cnodejs.android.md.R; import org.cnodejs.android.md.model.api.ApiClient; import org.cnodejs.android.md.model.api.DefaultCallback; import org.cnodejs.android.md.model.entity.Result; import org.cnodejs.android.md.presenter.contract.ILoginPresenter; import org.cnodejs.android.md.ui.view.ILoginView; import org.cnodejs.android.md.util.FormatUtils; import okhttp3.Headers; import retrofit2.Call; public class LoginPresenter implements ILoginPresenter { private final Activity activity; private final ILoginView loginView; public LoginPresenter(@NonNull Activity activity, @NonNull ILoginView loginView) { this.activity = activity; this.loginView = loginView; } @Override public void loginAsyncTask(final String accessToken) { if (!FormatUtils.isAccessToken(accessToken)) { loginView.onAccessTokenError(activity.getString(R.string.access_token_format_error)); } else { Call<Result.Login> call = ApiClient.service.accessToken(accessToken); loginView.onLoginStart(call); call.enqueue(new DefaultCallback<Result.Login>(activity) { @Override public boolean onResultOk(int code, Headers headers, Result.Login loginInfo) { loginView.onLoginOk(accessToken, loginInfo); return false; } @Override public boolean onResultAuthError(int code, Headers headers, Result.Error error) { loginView.onAccessTokenError(getActivity().getString(R.string.access_token_auth_error)); return false; } @Override public void onFinish() { loginView.onLoginFinish(); } }); } } }