fix loading user in creator

This commit is contained in:
Phillip Thelen 2017-04-13 12:23:23 +02:00
parent 5e5a6d63ca
commit de937c1f67
9 changed files with 63 additions and 57 deletions

View file

@ -25,6 +25,7 @@ import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy;
import com.habitrpg.android.habitica.ui.activities.IntroActivity;
import com.habitrpg.android.habitica.ui.activities.LoginActivity;
import com.habitrpg.android.habitica.data.ApiClient;
import com.habitrpg.android.habitica.ui.activities.SetupActivity;
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
import com.raizlabs.android.dbflow.config.FlowManager;
import com.squareup.leakcanary.LeakCanary;
@ -100,6 +101,7 @@ public abstract class HabiticaBaseApplication extends MultiDexApplication {
}
public static boolean checkUserAuthentication(Context context, HostConfig hostConfig) {
startActivity(SetupActivity.class, context);
if (hostConfig == null || hostConfig.getApi() == null || hostConfig.getApi().equals("") || hostConfig.getUser() == null || hostConfig.getUser().equals("")) {
startActivity(IntroActivity.class, context);

View file

@ -23,11 +23,11 @@ public interface TaskRepository extends BaseRepository {
Observable<Task> scoreChecklistItem(String taskId, String itemId);
Observable<Task> createTask(Task task);
Observable<Task> updateTask(Task task);
Observable<Void> deleteTask(String taskID);
Observable<List<Task>> createTasks(List<Task> newTasks);
void removeOldTasks(String userID, List<Task> onlineTaskList);
void removeOldChecklists(List<ChecklistItem> onlineChecklistItems);
void removeOldTaskTags(List<TaskTag> onlineTaskTags);

View file

@ -95,6 +95,11 @@ public class TaskRepositoryImpl extends BaseRepositoryImpl<TaskLocalRepository>
.doOnNext(aVoid -> localRepository.deleteTask(taskID));
}
@Override
public Observable<List<Task>> createTasks(List<Task> newTasks) {
return apiClient.createTasks(newTasks);
}
@Override
public void removeOldTasks(String userID, List<Task> onlineTaskList) {
localRepository.removeOldTasks(userID, onlineTaskList);

View file

@ -1,5 +1,7 @@
package com.habitrpg.android.habitica.data.implementation;
import android.support.annotation.Nullable;
import com.habitrpg.android.habitica.data.ApiClient;
import com.habitrpg.android.habitica.data.UserRepository;
import com.habitrpg.android.habitica.data.local.UserLocalRepository;
@ -38,7 +40,11 @@ public class UserRepositoryImpl extends BaseRepositoryImpl<UserLocalRepository>
return apiClient.revive().map(newUser -> mergeUser(user, newUser));
}
private HabitRPGUser mergeUser(HabitRPGUser oldUser, HabitRPGUser newUser) {
@Nullable
private HabitRPGUser mergeUser(@Nullable HabitRPGUser oldUser, HabitRPGUser newUser) {
if (oldUser == null) {
return null;
}
if (newUser.getItems() != null) {
oldUser.setItems(newUser.getItems());
}

View file

@ -2,45 +2,44 @@ package com.habitrpg.android.habitica.ui.activities;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.ViewPager;
import android.support.v7.content.res.AppCompatResources;
import android.support.v7.preference.PreferenceManager;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import com.habitrpg.android.habitica.ui.views.FadingViewPager;
import com.habitrpg.android.habitica.data.ApiClient;
import com.habitrpg.android.habitica.HostConfig;
import com.habitrpg.android.habitica.R;
import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
import com.habitrpg.android.habitica.callbacks.ItemsCallback;
import com.habitrpg.android.habitica.callbacks.MergeUserCallback;
import com.habitrpg.android.habitica.components.AppComponent;
import com.habitrpg.android.habitica.data.ApiClient;
import com.habitrpg.android.habitica.data.TaskRepository;
import com.habitrpg.android.habitica.data.UserRepository;
import com.habitrpg.android.habitica.events.commands.EquipCommand;
import com.habitrpg.android.habitica.events.commands.UpdateUserCommand;
import com.habitrpg.android.habitica.helpers.AmplitudeManager;
import com.habitrpg.android.habitica.ui.fragments.setup.AvatarSetupFragment;
import com.habitrpg.android.habitica.ui.fragments.setup.TaskSetupFragment;
import com.habitrpg.android.habitica.ui.fragments.setup.WelcomeFragment;
import com.habitrpg.android.habitica.ui.views.FadingViewPager;
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
import com.raizlabs.android.dbflow.sql.builder.Condition;
import com.raizlabs.android.dbflow.sql.language.Select;
import com.viewpagerindicator.IconPageIndicator;
import com.viewpagerindicator.IconPagerAdapter;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.support.v4.app.FragmentManager;
import android.support.v4.content.ContextCompat;
import android.support.v7.content.res.AppCompatResources;
import android.view.Window;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
@ -51,6 +50,7 @@ import javax.inject.Inject;
import butterknife.BindView;
import butterknife.OnClick;
import rx.Observable;
public class SetupActivity extends BaseActivity implements ViewPager.OnPageChangeListener, HabitRPGUserCallback.OnUserReceived {
@ -58,6 +58,10 @@ public class SetupActivity extends BaseActivity implements ViewPager.OnPageChang
public ApiClient apiClient;
@Inject
protected HostConfig hostConfig;
@Inject
protected UserRepository userRepository;
@Inject
protected TaskRepository taskRepository;
@BindView(R.id.view_pager)
FadingViewPager pager;
@BindView(R.id.nextButton)
@ -68,8 +72,9 @@ public class SetupActivity extends BaseActivity implements ViewPager.OnPageChang
IconPageIndicator indicator;
AvatarSetupFragment avatarSetupFragment;
TaskSetupFragment taskSetupFragment;
@Nullable
HabitRPGUser user;
Boolean completedSetup;
boolean completedSetup = false;
@Override
protected int getLayoutResId() {
@ -79,9 +84,17 @@ public class SetupActivity extends BaseActivity implements ViewPager.OnPageChang
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.user = new Select().from(HabitRPGUser.class).where(Condition.column("id").eq(hostConfig.getUser())).querySingle();
userRepository.getUser(hostConfig.getUser())
.flatMap(user -> {
if (user == null) {
return userRepository.retrieveUser(true);
} else {
return Observable.just(user);
}
})
.subscribe(this::onUserReceived, throwable -> {
this.completedSetup = false;
});
Map<String, Object> additionalData = new HashMap<>();
additionalData.put("status", "displayed");
@ -91,7 +104,7 @@ public class SetupActivity extends BaseActivity implements ViewPager.OnPageChang
for (String language : getResources().getStringArray(R.array.LanguageValues)) {
if (language.equals(currentDeviceLanguage)) {
apiClient.registrationLanguage(currentDeviceLanguage)
.subscribe(new MergeUserCallback(this, user), throwable -> {
.subscribe(habitRPGUser -> {}, throwable -> {
});
}
}
@ -119,16 +132,6 @@ public class SetupActivity extends BaseActivity implements ViewPager.OnPageChang
protected void onStart() {
super.onStart();
EventBus.getDefault().register(this);
if (this.pager.getAdapter() == null) {
if (this.user != null) {
setupViewpager();
} else {
this.apiClient.getUser()
.subscribe(new HabitRPGUserCallback(this), throwable -> {
});
}
}
}
@Override
@ -148,8 +151,8 @@ public class SetupActivity extends BaseActivity implements ViewPager.OnPageChang
@Subscribe
public void onEvent(UpdateUserCommand event) {
this.apiClient.updateUser(event.updateData)
.subscribe(new MergeUserCallback(this, user), throwable -> {
this.userRepository.updateUser(user, event.updateData)
.subscribe(this::onUserReceived, throwable -> {
});
}
@ -170,10 +173,8 @@ public class SetupActivity extends BaseActivity implements ViewPager.OnPageChang
if (isLastPage()) {
List<Task> newTasks = this.taskSetupFragment.createSampleTasks();
this.completedSetup = true;
this.apiClient.createTasks(newTasks)
.subscribe(tasks -> {
onUserReceived(user);
}, throwable -> {
this.taskRepository.createTasks(newTasks)
.subscribe(tasks -> onUserReceived(user), throwable -> {
});
//this.apiHelper.apiService.batchOperation(operations, new HabitRPGUserCallback(this));
}
@ -234,6 +235,9 @@ public class SetupActivity extends BaseActivity implements ViewPager.OnPageChang
if (this.avatarSetupFragment != null) {
this.avatarSetupFragment.setUser(user);
}
if (this.taskSetupFragment != null) {
this.taskSetupFragment.setUser(user);
}
}
Map<String, Object> additionalData = new HashMap<>();
@ -256,13 +260,9 @@ public class SetupActivity extends BaseActivity implements ViewPager.OnPageChang
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
Fragment fragment;
switch (position) {
case 0: {
fragment = new WelcomeFragment();
break;
}
case 1: {
avatarSetupFragment = new AvatarSetupFragment();
avatarSetupFragment.activity = SetupActivity.this;
@ -277,6 +277,10 @@ public class SetupActivity extends BaseActivity implements ViewPager.OnPageChang
fragment = taskSetupFragment;
break;
}
default: {
fragment = new WelcomeFragment();
break;
}
}
return fragment;

View file

@ -91,7 +91,7 @@ public class CustomizationSetupAdapter extends RecyclerView.Adapter<RecyclerView
case "extras": {
switch (customization.subcategory) {
case "glasses":
return customization.key.equals(this.user.getItems().getGear().getEquipped().getEyeWear()) || (this.user.getItems().getGear().getEquipped().getEyeWear() == null && customization.key.length() == 0);
return customization.key.equals(this.user.getItems().getGear().getEquipped().getEyeWear()) || ("eyewear_base_0".equals(this.user.getItems().getGear().getEquipped().getEyeWear()) && customization.key.length() == 0);
case "flower":
return Integer.parseInt(customization.key) == prefs.getHair().getFlower();
case "wheelchair":
@ -102,14 +102,6 @@ public class CustomizationSetupAdapter extends RecyclerView.Adapter<RecyclerView
return false;
}
private String getHairColor() {
if (this.user != null) {
return this.user.getPreferences().getHair().getColor();
} else {
return "";
}
}
class CustomizationViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
@BindView(R.id.imageView)
@ -146,7 +138,7 @@ public class CustomizationSetupAdapter extends RecyclerView.Adapter<RecyclerView
imageView.setImageDrawable(null);
}
textView.setText(customization.text);
if ("flowers".equals(customization.subcategory)) {
if (!"0".equals(customization.key) && "flower".equals(customization.subcategory)) {
if (isCustomizationActive(customization)) {
imageView.setBackgroundResource(R.drawable.setup_customization_flower_bg_selected);
} else {

View file

@ -1,9 +1,6 @@
package com.habitrpg.android.habitica.ui.adapter.setup;
import com.habitrpg.android.habitica.R;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.support.v4.content.ContextCompat;
@ -11,10 +8,10 @@ import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.habitrpg.android.habitica.R;
import java.util.ArrayList;
import java.util.List;

View file

@ -144,7 +144,7 @@ public class AvatarSetupFragment extends BaseFragment {
this.adapter.setCustomizationList(customizationRepository.getCustomizations(activeCategory, activeSubCategory, user));
}
public void setUser(HabitRPGUser user) {
public void setUser(@Nullable HabitRPGUser user) {
this.user = user;
if (avatarView != null) {
updateAvatar();

View file

@ -62,7 +62,7 @@ public class TaskSetupFragment extends BaseFragment {
return view;
}
public void setUser(HabitRPGUser user) {
public void setUser(@Nullable HabitRPGUser user) {
this.user = user;
if (avatarView != null) {
updateAvatar();