ankitkhandelwal185 / android-nodejs

1 stars 0 forks source link

Error:(130, 18) The method observeOn(Scheduler) is undefined for the type Observable<ClientLogin.Response> #1

Open ankitkhandelwal185 opened 7 years ago

ankitkhandelwal185 commented 7 years ago

` private void loginProcess(String email, String password) {

    mSubscriptions.add(NetworkUtil.getRetrofit(email, password).login()
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.io())
            .subscribe(this::handleResponse,this::handleError));
}

dependencies that i have added are: ` compile 'com.squareup.retrofit2:retrofit:2.1.0' compile 'com.squareup.retrofit2:converter-gson:2.1.0' compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' compile 'io.reactivex:rxjava:1.2.0' compile 'io.reactivex:rxandroid:1.2.1'``

DavidMihola commented 7 years ago

Could you please show the complete source file that contains the loginProcess method? Also, you are getting this error when running Gradle from the command line?

ankitkhandelwal185 commented 7 years ago

Thank you for your response. Here i am attaching LoginFragment.java file that contains loginProcess method and I am getting this error when i am trying to run the app from android studio. `package app.iwayinfo.feb20.fragments;

import android.app.Fragment; import android.app.FragmentTransaction; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; import android.support.design.widget.TextInputLayout; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.TextView; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import java.io.IOException; import app.iwayinfo.feb20.ProfileActivity; import app.iwayinfo.feb20.R; import app.iwayinfo.feb20.model.Response; import app.iwayinfo.feb20.network.NetworkUtil; import app.iwayinfo.feb20.utils.Constants; import retrofit2.adapter.rxjava.HttpException; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; import rx.subscriptions.CompositeSubscription; import static app.iwayinfo.feb20.utils.Validation.validateEmail; import static app.iwayinfo.feb20.utils.Validation.validateFields;

public class LoginFragment extends Fragment {

public static final String TAG = LoginFragment.class.getSimpleName();

private EditText mEtEmail;
private EditText mEtPassword;
private Button mBtLogin;
private TextView mTvRegister;
private TextView mTvForgotPassword;
private TextInputLayout mTiEmail;
private TextInputLayout mTiPassword;
private ProgressBar mProgressBar;
private CompositeSubscription mSubscriptions;
private SharedPreferences mSharedPreferences;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_login,container,false);
    mSubscriptions = new CompositeSubscription();
    initViews(view);
    initSharedPreferences();
    return view;
}

private void initViews(View v) {

    mEtEmail = (EditText) v.findViewById(R.id.et_email);
    mEtPassword = (EditText) v.findViewById(R.id.et_password);
    mBtLogin = (Button) v.findViewById(R.id.btn_login);
    mTiEmail = (TextInputLayout) v.findViewById(R.id.ti_email);
    mTiPassword = (TextInputLayout) v.findViewById(R.id.ti_password);
    mProgressBar = (ProgressBar) v.findViewById(R.id.progress);
    mTvRegister = (TextView) v.findViewById(R.id.tv_register);
    mTvForgotPassword = (TextView) v.findViewById(R.id.tv_forgot_password);

    mBtLogin.setOnClickListener(view -> login());
    mTvRegister.setOnClickListener(view -> goToRegister());
    mTvForgotPassword.setOnClickListener(view -> showDialog());
}

private void initSharedPreferences() {

    mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
}

private void login() {

    setError();

    String email = mEtEmail.getText().toString();
    String password = mEtPassword.getText().toString();

    int err = 0;

    if (!validateEmail(email)) {

        err++;
        mTiEmail.setError("Email should be valid !");
    }

    if (!validateFields(password)) {

        err++;
        mTiPassword.setError("Password should not be empty !");
    }

    if (err == 0) {

        loginProcess(email,password);
        mProgressBar.setVisibility(View.VISIBLE);

    } else {

        showSnackBarMessage("Enter Valid Details !");
    }
}

private void setError() {

    mTiEmail.setError(null);
    mTiPassword.setError(null);
}

private void loginProcess(String email, String password) {

    mSubscriptions.add(NetworkUtil.getRetrofit(email, password).login()
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.io())
            .subscribe(this::handleResponse,this::handleError));
}

private void handleResponse(Response response) {

    mProgressBar.setVisibility(View.GONE);

    SharedPreferences.Editor editor = mSharedPreferences.edit();
    editor.putString(Constants.TOKEN,response.getToken());
    editor.putString(Constants.EMAIL,response.getMessage());
    editor.apply();

    mEtEmail.setText(null);
    mEtPassword.setText(null);

    Intent intent = new Intent(getActivity(), ProfileActivity.class);
    startActivity(intent);

}

private void handleError(Throwable error) {

    mProgressBar.setVisibility(View.GONE);

    if (error instanceof HttpException) {

        Gson gson = new GsonBuilder().create();

        try {

            String errorBody = ((HttpException) error).response().errorBody().string();
            Response response = gson.fromJson(errorBody,Response.class);
            showSnackBarMessage(response.getMessage());

        } catch (IOException e) {
            e.printStackTrace();
        }
    } else {

        showSnackBarMessage("Network Error !");
    }
}

private void showSnackBarMessage(String message) {

    if (getView() != null) {

        Snackbar.make(getView(),message,Snackbar.LENGTH_SHORT).show();
    }
}

private void goToRegister(){

    FragmentTransaction ft = getFragmentManager().beginTransaction();
    RegisterFragment fragment = new RegisterFragment();
    ft.replace(R.id.fragmentFrame,fragment,RegisterFragment.TAG);
    ft.commit();
}

private void showDialog(){

    ResetPasswordDialog fragment = new ResetPasswordDialog();

    fragment.show(getFragmentManager(), ResetPasswordDialog.TAG);
}

@Override
public void onDestroy() {
    super.onDestroy();
    mSubscriptions.unsubscribe();
}

} `

DavidMihola commented 7 years ago

OK. And what is returned by getRetrofit(email, password)? Could you post the source file that contains the login method, too?