package com.tresorit.zerokitsdk.viewmodel;
import android.databinding.BaseObservable;
import android.databinding.ObservableField;
import android.view.View;
import com.tresorit.zerokit.AdminApi;
import com.tresorit.zerokit.Zerokit;
import com.tresorit.zerokit.call.Action;
import com.tresorit.zerokit.response.ResponseAdminApiError;
import com.tresorit.zerokit.response.ResponseZerokitError;
import com.tresorit.zerokitsdk.message.CreateTresorFinishedMessage;
import com.tresorit.zerokitsdk.message.ShowMessageMessage;
import org.greenrobot.eventbus.EventBus;
import javax.inject.Inject;
public class CreateTresorViewModel extends BaseObservable {
@SuppressWarnings("WeakerAccess")
public final View.OnClickListener clickListener;
@SuppressWarnings("WeakerAccess")
public final ObservableField<Boolean> inProgress;
@SuppressWarnings("WeakerAccess")
public final ObservableField<String> tresorId;
private final Zerokit zerokit;
@SuppressWarnings("WeakerAccess")
final AdminApi adminApi;
@SuppressWarnings("WeakerAccess")
final EventBus eventBus;
@SuppressWarnings("WeakerAccess")
final Action<ResponseZerokitError> errorResponseHandlerSdk;
@SuppressWarnings("WeakerAccess")
final Action<ResponseAdminApiError> errorResponseHandlerAdminapi;
@Inject
public CreateTresorViewModel(final Zerokit zerokit, final AdminApi adminApi, final EventBus eventBus) {
this.zerokit = zerokit;
this.adminApi = adminApi;
this.eventBus = eventBus;
this.inProgress = new ObservableField<>(false);
this.tresorId = new ObservableField<>("");
this.clickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
createTresor();
inProgress.set(true);
}
};
errorResponseHandlerSdk = new Action<ResponseZerokitError>() {
@Override
public void call(ResponseZerokitError errorResponse) {
inProgress.set(false);
eventBus.post(new ShowMessageMessage(errorResponse.toString()));
}
};
errorResponseHandlerAdminapi = new Action<ResponseAdminApiError>() {
@Override
public void call(ResponseAdminApiError errorResponse) {
inProgress.set(false);
eventBus.post(new ShowMessageMessage(errorResponse.toString()));
}
};
}
@SuppressWarnings("WeakerAccess")
void createTresor() {
inProgress.set(true);
this.zerokit.createTresor().enqueue(new Action<String>() {
@Override
public void call(final String tresorId) {
adminApi.createdTresor(tresorId).enqueue(new Action<Void>() {
@Override
public void call(Void res) {
CreateTresorViewModel.this.inProgress.set(false);
CreateTresorViewModel.this.tresorId.set("Tresor Id: " + tresorId);
CreateTresorViewModel.this.eventBus.post(new CreateTresorFinishedMessage(tresorId));
}
}, errorResponseHandlerAdminapi);
}
}, errorResponseHandlerSdk);
}
}