// Path: app/src/main/java/com/wiseass/profiler/data/auth/AuthSource.java
// public interface AuthSource {
// 
//     Completable createAccount(Credentials cred);
// 
//     Completable attemptLogin(Credentials cred);
// 
//     Completable deleteUser();
// 
//     Maybe<User> getUser();
// 
//     Completable logUserOut();
// 
//     Completable reauthenticateUser(String password);
// 
//     void setReturnFail(boolean bool);
// }
// 
// Path: app/src/main/java/com/wiseass/profiler/data/auth/User.java
// public class User {
//     private String email;
//     private String userId;
// 
//     public User(String email, String userId) {
//         this.email = email;
//         this.userId = userId;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getUserId() {
//         return userId;
//     }
// 
//     public void setUserId(String userId) {
//         this.userId = userId;
//     }
// }
// 
// Path: app/src/main/java/com/wiseass/profiler/data/database/DatabaseSource.java
// public interface DatabaseSource {
//     /**
//      * Create a profile to write to the Firebase Cloud Database
//      */
//     Completable createProfile(Profile profile);
// 
//     /**
//      *
//      */
//     Maybe<Profile> getProfile(String uid);
// 
//     /**
//      *
//      */
//     Completable deleteProfile(String uid);
// 
//     /**
//      *
//      */
//     Completable updateProfile(Profile profile);
// 
//     void setReturnFail(boolean bool);
// 
//     void setReturnEmpty(boolean bool);
// }
// 
// Path: app/src/main/java/com/wiseass/profiler/data/database/Profile.java
// public class Profile {
//     private String bio;
//     private String interests;
//     private String uid;
//     private String email;
//     private String photoURL;
//     private String name;
// 
//     public Profile(String bio, String interests, String uid, String email, String photoURL, String name) {
//         this.bio = bio;
//         this.interests = interests;
//         this.uid = uid;
//         this.email = email;
//         this.photoURL = photoURL;
//         this.name = name;
//     }
// 
//     public Profile() {
//         //for firebase
//     }
// 
// 
//     public void setUid(String uid) {
//         this.uid = uid;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getPhotoURL() {
//         return photoURL;
//     }
// 
//     public void setPhotoURL(String photoURL) {
//         this.photoURL = photoURL;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getBio() {
//         return bio;
//     }
// 
//     public void setBio(String bio) {
//         this.bio = bio;
//     }
// 
//     public String getInterests() {
//         return interests;
//     }
// 
//     public void setInterests(String interests) {
//         this.interests = interests;
//     }
// 
//     public String getUid(){
//         return this.uid;
//     }
// }
// 
// Path: app/src/main/java/com/wiseass/profiler/util/BaseSchedulerProvider.java
// public interface BaseSchedulerProvider {
// 
//     Scheduler computation();
// 
//     Scheduler io();
// 
//     Scheduler ui();
// }


import com.wiseass.profiler.R;
import com.wiseass.profiler.data.auth.AuthSource;
import com.wiseass.profiler.data.auth.User;
import com.wiseass.profiler.data.database.DatabaseSource;
import com.wiseass.profiler.data.database.Profile;
import com.wiseass.profiler.util.BaseSchedulerProvider;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.observers.DisposableCompletableObserver;
import io.reactivex.observers.DisposableMaybeObserver;
package com.wiseass.profiler.profilepage;



/**
 * Created by Ryan on 25/02/2017.
 */

public class ProfilePagePresenter implements ProfilePageContract.Presenter {

    private final BaseSchedulerProvider schedulerProvider;
    private AuthSource auth;
    private DatabaseSource database;
    private ProfilePageContract.View view;
    private User currentUser;
    private CompositeDisposable disposableSubscriptions;

    public ProfilePagePresenter(AuthSource auth,
                                ProfilePageContract.View view,
                                DatabaseSource database,
// Path: app/src/main/java/com/wiseass/profiler/data/auth/AuthSource.java
// public interface AuthSource {
// 
//     Completable createAccount(Credentials cred);
// 
//     Completable attemptLogin(Credentials cred);
// 
//     Completable deleteUser();
// 
//     Maybe<User> getUser();
// 
//     Completable logUserOut();
// 
//     Completable reauthenticateUser(String password);
// 
//     void setReturnFail(boolean bool);
// }
// 
// Path: app/src/main/java/com/wiseass/profiler/data/auth/User.java
// public class User {
//     private String email;
//     private String userId;
// 
//     public User(String email, String userId) {
//         this.email = email;
//         this.userId = userId;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getUserId() {
//         return userId;
//     }
// 
//     public void setUserId(String userId) {
//         this.userId = userId;
//     }
// }
// 
// Path: app/src/main/java/com/wiseass/profiler/data/database/DatabaseSource.java
// public interface DatabaseSource {
//     /**
//      * Create a profile to write to the Firebase Cloud Database
//      */
//     Completable createProfile(Profile profile);
// 
//     /**
//      *
//      */
//     Maybe<Profile> getProfile(String uid);
// 
//     /**
//      *
//      */
//     Completable deleteProfile(String uid);
// 
//     /**
//      *
//      */
//     Completable updateProfile(Profile profile);
// 
//     void setReturnFail(boolean bool);
// 
//     void setReturnEmpty(boolean bool);
// }
// 
// Path: app/src/main/java/com/wiseass/profiler/data/database/Profile.java
// public class Profile {
//     private String bio;
//     private String interests;
//     private String uid;
//     private String email;
//     private String photoURL;
//     private String name;
// 
//     public Profile(String bio, String interests, String uid, String email, String photoURL, String name) {
//         this.bio = bio;
//         this.interests = interests;
//         this.uid = uid;
//         this.email = email;
//         this.photoURL = photoURL;
//         this.name = name;
//     }
// 
//     public Profile() {
//         //for firebase
//     }
// 
// 
//     public void setUid(String uid) {
//         this.uid = uid;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getPhotoURL() {
//         return photoURL;
//     }
// 
//     public void setPhotoURL(String photoURL) {
//         this.photoURL = photoURL;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getBio() {
//         return bio;
//     }
// 
//     public void setBio(String bio) {
//         this.bio = bio;
//     }
// 
//     public String getInterests() {
//         return interests;
//     }
// 
//     public void setInterests(String interests) {
//         this.interests = interests;
//     }
// 
//     public String getUid(){
//         return this.uid;
//     }
// }
// 
// Path: app/src/main/java/com/wiseass/profiler/util/BaseSchedulerProvider.java
// public interface BaseSchedulerProvider {
// 
//     Scheduler computation();
// 
//     Scheduler io();
// 
//     Scheduler ui();
// }


// Path: app/src/main/java/com/wiseass/profiler/profilepage/ProfilePagePresenter.java
import com.wiseass.profiler.R;
import com.wiseass.profiler.data.auth.AuthSource;
import com.wiseass.profiler.data.auth.User;
import com.wiseass.profiler.data.database.DatabaseSource;
import com.wiseass.profiler.data.database.Profile;
import com.wiseass.profiler.util.BaseSchedulerProvider;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.observers.DisposableCompletableObserver;
import io.reactivex.observers.DisposableMaybeObserver;

package com.wiseass.profiler.profilepage;



/**
 * Created by Ryan on 25/02/2017.
 */

public class ProfilePagePresenter implements ProfilePageContract.Presenter {

    private final BaseSchedulerProvider schedulerProvider;
    private AuthSource auth;
    private DatabaseSource database;
    private ProfilePageContract.View view;
    private User currentUser;
    private CompositeDisposable disposableSubscriptions;

    public ProfilePagePresenter(AuthSource auth,
                                ProfilePageContract.View view,
                                DatabaseSource database,
                                BaseSchedulerProvider schedulerProvider