mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-31 19:20:34 +00:00
fix loading user in creator
This commit is contained in:
parent
5e5a6d63ca
commit
de937c1f67
9 changed files with 63 additions and 57 deletions
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Reference in a new issue