package com.fastaccess.ui.modules.cloud.restore; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import com.fastaccess.R; import com.fastaccess.data.dao.BackupRestoreModel; import com.fastaccess.helper.InputHelper; import com.fastaccess.helper.Logger; import com.fastaccess.ui.base.mvp.presenter.BasePresenter; import com.google.firebase.auth.FirebaseUser; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.Query; /** * Created by Kosh on 23 Oct 2016, 9:04 PM */ public class RestorePresenter extends BasePresenter<RestoreMvp.View> implements RestoreMvp.Presenter { private String userId; protected RestorePresenter(@NonNull RestoreMvp.View view) { super(view); } public static RestorePresenter with(@NonNull RestoreMvp.View view) { return new RestorePresenter(view); } @Override public void onRestore(@NonNull DatabaseReference databaseReference, @Nullable String userId) { this.userId = userId; FirebaseUser user = getView().user(); if (InputHelper.isEmpty(userId)) { if (user != null) userId = user.getUid(); } if (InputHelper.isEmpty(userId)) { getView().onShowMessage(R.string.login_first_msg); getView().finishOnError(); } else { getView().onShowProgress(); Query query = databaseReference .child(userId); query.keepSynced(true); query.addListenerForSingleValueEvent(this); } } @Override public void onDataChange(DataSnapshot dataSnapshot) { if (!isAttached()) return; if (dataSnapshot != null && dataSnapshot.hasChildren()) { FirebaseUser user = getView().user(); if (InputHelper.isEmpty(userId)) { if (user != null) userId = user.getUid(); } if (userId == null) { getView().onHideProgress(); getView().onShowMessage(R.string.login_first_msg); getView().finishOnError(); return; } Logger.e(dataSnapshot); BackupRestoreModel.restore(dataSnapshot.getValue(BackupRestoreModel.class)); getView().onHideProgress(); getView().onRestoreCompleted(); } else { getView().onHideProgress(); getView().onShowMessage(R.string.no_data_to_restore); getView().finishOnError(); } } @Override public void onCancelled(DatabaseError databaseError) { Logger.e(databaseError.getMessage()); getView().onHideProgress(); getView().finishOnError(); } }