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 org.greenrobot.eventbus.Subscribe; import javax.inject.Inject; public class ShareTresorViewModel extends BaseObservable { @SuppressWarnings("WeakerAccess") public final View.OnClickListener clickListener; @SuppressWarnings("WeakerAccess") public final ObservableField<Boolean> inProgress; @SuppressWarnings("WeakerAccess") public final ObservableField<String> userId; @SuppressWarnings("WeakerAccess") public final ObservableField<String> textSummary; @SuppressWarnings("WeakerAccess") public final ObservableField<String> sharedWithUserId; @SuppressWarnings("WeakerAccess") final Action<ResponseZerokitError> errorResponseHandlerSdk; @SuppressWarnings("WeakerAccess") final Action<ResponseAdminApiError> errorResponseHandlerAdminapi; final Zerokit zerokit; @SuppressWarnings("WeakerAccess") final AdminApi adminApi; @SuppressWarnings("WeakerAccess") String tresorId; @Inject public ShareTresorViewModel(Zerokit zerokit, AdminApi adminApi, final EventBus eventBus) { this.zerokit = zerokit; this.adminApi = adminApi; this.inProgress = new ObservableField<>(false); this.userId = new ObservableField<>(); this.textSummary = new ObservableField<>(); this.sharedWithUserId = new ObservableField<>(""); this.clickListener = new View.OnClickListener() { @Override public void onClick(View v) { shareTresor(tresorId, userId.get()); } }; 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 shareTresor(final String tresorId, final String userName) { inProgress.set(true); sharedWithUserId.set(""); this.adminApi.getUserId(userName).enqueue(new Action<String>() { @Override public void call(String userId) { zerokit.shareTresor(tresorId, userId).enqueue(new Action<String>() { @Override public void call(String shareId) { adminApi.sharedTresor(shareId).enqueue(new Action<Void>() { @Override public void call(Void result) { sharedWithUserId.set("Shared with: " + userName); inProgress.set(false); } }, errorResponseHandlerAdminapi); } }, errorResponseHandlerSdk); } }, errorResponseHandlerAdminapi); } @Subscribe @SuppressWarnings("unused") public void onEvent(CreateTresorFinishedMessage message) { tresorId = message.getTresorId(); textSummary.set("Tresor ID: " + message.getTresorId()); sharedWithUserId.set(""); } }