From c033c3e75b2acbce193d3ff8289fd317ac41c76a Mon Sep 17 00:00:00 2001 From: Negue Date: Wed, 18 Jan 2017 19:07:07 +0100 Subject: [PATCH 01/34] copy & reimplement TaskRepository from clean-architecture --- .../callbacks/HabitRPGUserCallback.java | 1 + .../android/habitica/data/BaseRepository.java | 5 ++ .../android/habitica/data/TaskRepository.java | 15 +++++ .../implementation/BaseRepositoryImpl.java | 20 ++++++ .../implementation/TaskRepositoryImpl.java | 35 +++++++++++ .../data/local/BaseLocalRepository.java | 6 ++ .../data/local/TaskLocalRepository.java | 15 +++++ .../DbFlowTaskLocalRepository.java | 63 +++++++++++++++++++ .../habitica/modules/RepositoryModule.java | 22 +++++++ .../habitrpgwrapper/lib/api/ApiService.java | 3 + 10 files changed, 185 insertions(+) create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/data/BaseRepository.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/data/local/BaseLocalRepository.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/DbFlowTaskLocalRepository.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/modules/RepositoryModule.java diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/callbacks/HabitRPGUserCallback.java b/Habitica/src/main/java/com/habitrpg/android/habitica/callbacks/HabitRPGUserCallback.java index 8b09aaec0..0fd313e8c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/callbacks/HabitRPGUserCallback.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/callbacks/HabitRPGUserCallback.java @@ -18,6 +18,7 @@ public class HabitRPGUserCallback implements Action1 { @Override public void call(HabitRPGUser habitRPGUser) { + // Negue: once everything is refactored to DbFlowTaskLocalRepository, this will be removed habitRPGUser.async().save(); callBack.onUserReceived(habitRPGUser); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/BaseRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/BaseRepository.java new file mode 100644 index 000000000..fb8ad2e60 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/BaseRepository.java @@ -0,0 +1,5 @@ +package com.habitrpg.android.habitica.data; + +public interface BaseRepository { + +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java new file mode 100644 index 000000000..6ae2c965f --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java @@ -0,0 +1,15 @@ +package com.habitrpg.android.habitica.data; + +import com.magicmicky.habitrpgwrapper.lib.models.responses.HabitResponse; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.TasksOrder; + +import java.util.ArrayList; + +import rx.Observable; + +public interface TaskRepository extends BaseRepository { + Observable> getTasks(String taskType); + + Observable>> refreshTasks(TasksOrder tasksOrder); +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.java new file mode 100644 index 000000000..58fc38eee --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.java @@ -0,0 +1,20 @@ +package com.habitrpg.android.habitica.data.implementation; + +import com.habitrpg.android.habitica.data.BaseRepository; +import com.habitrpg.android.habitica.data.local.BaseLocalRepository; +import com.magicmicky.habitrpgwrapper.lib.api.ApiService; + +public abstract class BaseRepositoryImpl implements BaseRepository { + + protected final T localRepository; + protected final ApiService apiService; + + public BaseRepositoryImpl(T localRepository, ApiService apiService) { + this.localRepository = localRepository; + this.apiService = apiService; + } + + public void close() { + this.localRepository.close(); + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java new file mode 100644 index 000000000..f28996408 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java @@ -0,0 +1,35 @@ +package com.habitrpg.android.habitica.data.implementation; + +import com.habitrpg.android.habitica.data.TaskRepository; +import com.habitrpg.android.habitica.data.local.TaskLocalRepository; +import com.habitrpg.android.habitica.models.Task; +import com.habitrpg.android.habitica.network.ApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiService; +import com.magicmicky.habitrpgwrapper.lib.models.responses.HabitResponse; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.TasksOrder; + +import java.util.ArrayList; +import java.util.List; + +import io.realm.RealmResults; +import rx.Observable; + +public class TaskRepositoryImpl extends BaseRepositoryImpl implements TaskRepository { + + + public TaskRepositoryImpl(TaskLocalRepository localRepository, ApiService apiService) { + super(localRepository, apiService); + } + + @Override + public Observable> getTasks(String taskType) { + return this.localRepository.getTasks(taskType); + } + + @Override + public Observable>> refreshTasks(TasksOrder tasksOrder) { + return this.apiService.getUserTasks() + .doOnNext(res -> this.localRepository.saveTasks(tasksOrder, res.data)); + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/BaseLocalRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/BaseLocalRepository.java new file mode 100644 index 000000000..4dae26d2e --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/BaseLocalRepository.java @@ -0,0 +1,6 @@ +package com.habitrpg.android.habitica.data.local; + +public interface BaseLocalRepository { + + void close(); +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.java new file mode 100644 index 000000000..bf7316ca4 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.java @@ -0,0 +1,15 @@ +package com.habitrpg.android.habitica.data.local; + +import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.TasksOrder; + +import java.util.ArrayList; + +import rx.Observable; + +public interface TaskLocalRepository extends BaseLocalRepository { + + Observable> getTasks(String taskType); + + void saveTasks(TasksOrder tasksOrder, ArrayList tasks); +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/DbFlowTaskLocalRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/DbFlowTaskLocalRepository.java new file mode 100644 index 000000000..012130b16 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/DbFlowTaskLocalRepository.java @@ -0,0 +1,63 @@ +package com.habitrpg.android.habitica.data.local.implementation; + +import com.habitrpg.android.habitica.data.local.TaskLocalRepository; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.TasksOrder; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import rx.Observable; + +public class DbFlowTaskLocalRepository implements TaskLocalRepository { + + @Override + public Observable> getTasks(String taskType) { + return null; + } + + @Override + public void saveTasks(TasksOrder tasksOrder, ArrayList tasks) { + sortTasks(tasks, tasksOrder.getHabits()); + sortTasks(tasks, tasksOrder.getDailys()); + sortTasks(tasks, tasksOrder.getTodos()); + sortTasks(tasks, tasksOrder.getRewards()); + + // Negue: once everything is refactored to DbFlowTaskLocalRepository, this will be used to save the tasks + // not in HabitRPGUserCallback + + /* + for (Task t : tasks){ + t.async().save(); + } + */ + } + + private List sortTasks(List taskList, List taskOrder) { + List taskResult = new ArrayList<>(); + int position = 0; + + HashMap taskMap = new HashMap<>(); + + for (Task t : taskList){ + taskMap.put(t.getId(), t); + } + + for (String taskId : taskOrder) { + Task task = taskMap.get(taskId); + if (task != null) { + task.position = position; + taskResult.add(task); + position++; + taskMap.remove(taskId); + } + } + return taskList; + } + + @Override + public void close() { + + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/RepositoryModule.java b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/RepositoryModule.java new file mode 100644 index 000000000..9231c4cca --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/RepositoryModule.java @@ -0,0 +1,22 @@ +package com.habitrpg.android.habitica.modules; + +import com.habitrpg.android.habitica.data.TaskRepository; +import com.habitrpg.android.habitica.data.implementation.TaskRepositoryImpl; +import com.habitrpg.android.habitica.data.local.TaskLocalRepository; +import com.habitrpg.android.habitica.data.local.implementation.DbFlowTaskLocalRepository; +import com.magicmicky.habitrpgwrapper.lib.api.ApiService; + +import dagger.Provides; + +public class RepositoryModule { + + @Provides + TaskLocalRepository providesTaskLocalRepository() { + return new DbFlowTaskLocalRepository(); + } + + @Provides + TaskRepository providesTaskRepository(TaskLocalRepository localRepository, ApiService apiService) { + return new TaskRepositoryImpl(localRepository, apiService); + } +} diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java index 5641255f8..bc12b19d4 100644 --- a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java +++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java @@ -100,6 +100,9 @@ public interface ApiService { @GET("tasks/user") Observable> getTasks(); + @GET("tasks/user") + Observable>> getUserTasks(); + @POST("user/unlock") Observable> unlockPath(@Query("path") String path); From b44a23c3868e406a32a293c9ed4707407fdd5906 Mon Sep 17 00:00:00 2001 From: Negue Date: Mon, 23 Jan 2017 22:06:20 +0100 Subject: [PATCH 02/34] HabitScoreUseCase --- .../habitica/components/AppComponent.java | 3 +- .../android/habitica/data/TaskRepository.java | 3 ++ .../implementation/TaskRepositoryImpl.java | 34 +++++++++--- .../data/local/TaskLocalRepository.java | 2 + .../DbFlowTaskLocalRepository.java | 5 ++ .../habitica/executors/JobExecutor.java | 53 +++++++++++++++++++ .../executors/PostExecutionThread.java | 7 +++ .../habitica/executors/ThreadExecutor.java | 5 ++ .../android/habitica/executors/UIThread.java | 19 +++++++ .../interactors/HabitScoreUseCase.java | 48 +++++++++++++++++ .../interactors/ListTasksUseCase.java | 39 ++++++++++++++ .../android/habitica/interactors/UseCase.java | 34 ++++++++++++ .../android/habitica/modules/ApiModule.java | 8 +++ .../android/habitica/modules/AppModule.java | 18 +++++++ .../habitica/modules/RepositoryModule.java | 7 ++- .../habitica/ui/activities/MainActivity.java | 16 ++++-- .../lib/models/HabitRPGUser.java | 28 +++++----- 17 files changed, 302 insertions(+), 27 deletions(-) create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/executors/JobExecutor.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/executors/PostExecutionThread.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/executors/ThreadExecutor.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/executors/UIThread.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/interactors/HabitScoreUseCase.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/interactors/ListTasksUseCase.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/interactors/UseCase.java diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java b/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java index a6e93ed59..53a44e3af 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java @@ -9,6 +9,7 @@ import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManag import com.habitrpg.android.habitica.modules.ApiModule; import com.habitrpg.android.habitica.modules.AppModule; import com.habitrpg.android.habitica.modules.DeveloperModule; +import com.habitrpg.android.habitica.modules.RepositoryModule; import com.habitrpg.android.habitica.receivers.LocalNotificationActionReceiver; import com.habitrpg.android.habitica.ui.activities.AboutActivity; import com.habitrpg.android.habitica.ui.activities.ChallengeDetailActivity; @@ -79,7 +80,7 @@ import javax.inject.Singleton; import dagger.Component; @Singleton -@Component(modules = {AppModule.class, ApiModule.class, DeveloperModule.class}) +@Component(modules = {AppModule.class, ApiModule.class, DeveloperModule.class, RepositoryModule.class}) public interface AppComponent { void inject(ClassSelectionActivity classSelectionActivity); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java index 6ae2c965f..a89543c43 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java @@ -1,5 +1,6 @@ package com.habitrpg.android.habitica.data; +import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; import com.magicmicky.habitrpgwrapper.lib.models.responses.HabitResponse; import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; import com.magicmicky.habitrpgwrapper.lib.models.tasks.TasksOrder; @@ -12,4 +13,6 @@ public interface TaskRepository extends BaseRepository { Observable> getTasks(String taskType); Observable>> refreshTasks(TasksOrder tasksOrder); + + Observable scoreHabit(Task task, boolean up); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java index f28996408..ebcdd5565 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java @@ -1,25 +1,30 @@ package com.habitrpg.android.habitica.data.implementation; +import com.habitrpg.android.habitica.APIHelper; +import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.data.TaskRepository; import com.habitrpg.android.habitica.data.local.TaskLocalRepository; -import com.habitrpg.android.habitica.models.Task; -import com.habitrpg.android.habitica.network.ApiClient; +import com.habitrpg.android.habitica.ui.helpers.UiUtils; import com.magicmicky.habitrpgwrapper.lib.api.ApiService; +import com.magicmicky.habitrpgwrapper.lib.models.TaskDirection; +import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; import com.magicmicky.habitrpgwrapper.lib.models.responses.HabitResponse; import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; import com.magicmicky.habitrpgwrapper.lib.models.tasks.TasksOrder; import java.util.ArrayList; -import java.util.List; -import io.realm.RealmResults; import rx.Observable; + public class TaskRepositoryImpl extends BaseRepositoryImpl implements TaskRepository { - public TaskRepositoryImpl(TaskLocalRepository localRepository, ApiService apiService) { - super(localRepository, apiService); + private APIHelper apiHelper; + + public TaskRepositoryImpl(TaskLocalRepository localRepository, APIHelper apiHelper) { + super(localRepository, apiHelper.apiService); + this.apiHelper = apiHelper; } @Override @@ -32,4 +37,21 @@ public class TaskRepositoryImpl extends BaseRepositoryImpl return this.apiService.getUserTasks() .doOnNext(res -> this.localRepository.saveTasks(tasksOrder, res.data)); } + + @Override + public Observable scoreHabit(Task task, boolean up) { + return this.apiService.postTaskDirection(task.getId(), (up ? TaskDirection.up : TaskDirection.down).toString()) + .compose(apiHelper.configureApiCallObserver()) + .doOnNext(res -> { + + // save local task changes + if (task != null && task.type != null && !task.type.equals("reward")) { + task.value = task.value + res.getDelta(); + + this.localRepository.saveTask(task); + } + + // play sound + }); + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.java index bf7316ca4..e2954db45 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.java @@ -12,4 +12,6 @@ public interface TaskLocalRepository extends BaseLocalRepository { Observable> getTasks(String taskType); void saveTasks(TasksOrder tasksOrder, ArrayList tasks); + + void saveTask(Task task); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/DbFlowTaskLocalRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/DbFlowTaskLocalRepository.java index 012130b16..f650ab5d8 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/DbFlowTaskLocalRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/DbFlowTaskLocalRepository.java @@ -34,6 +34,11 @@ public class DbFlowTaskLocalRepository implements TaskLocalRepository { */ } + @Override + public void saveTask(Task task) { + task.async().save(); + } + private List sortTasks(List taskList, List taskOrder) { List taskResult = new ArrayList<>(); int position = 0; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/executors/JobExecutor.java b/Habitica/src/main/java/com/habitrpg/android/habitica/executors/JobExecutor.java new file mode 100644 index 000000000..30a395db1 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/executors/JobExecutor.java @@ -0,0 +1,53 @@ +package com.habitrpg.android.habitica.executors; + +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +import javax.inject.Inject; +import javax.inject.Singleton; + +@Singleton +public class JobExecutor implements ThreadExecutor { + + private static final int INITIAL_POOL_SIZE = 3; + private static final int MAX_POOL_SIZE = 5; + + // Sets the amount of time an idle thread waits before terminating + private static final int KEEP_ALIVE_TIME = 10; + + // Sets the Time Unit to seconds + private static final TimeUnit KEEP_ALIVE_TIME_UNIT = TimeUnit.SECONDS; + + private final BlockingQueue workQueue; + + private final ThreadPoolExecutor threadPoolExecutor; + + private final ThreadFactory threadFactory; + + @Inject + public JobExecutor() { + this.workQueue = new LinkedBlockingQueue<>(); + this.threadFactory = new JobThreadFactory(); + this.threadPoolExecutor = new ThreadPoolExecutor(INITIAL_POOL_SIZE, MAX_POOL_SIZE, + KEEP_ALIVE_TIME, KEEP_ALIVE_TIME_UNIT, this.workQueue, this.threadFactory); + } + + @Override public void execute(Runnable runnable) { + if (runnable == null) { + throw new IllegalArgumentException("Runnable to execute cannot be null"); + } + this.threadPoolExecutor.execute(runnable); + } + + private static class JobThreadFactory implements ThreadFactory { + private static final String THREAD_NAME = "android_"; + private int counter = 0; + + @Override public Thread newThread(Runnable runnable) { + return new Thread(runnable, THREAD_NAME + counter++); + } + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/executors/PostExecutionThread.java b/Habitica/src/main/java/com/habitrpg/android/habitica/executors/PostExecutionThread.java new file mode 100644 index 000000000..eaba4fb72 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/executors/PostExecutionThread.java @@ -0,0 +1,7 @@ +package com.habitrpg.android.habitica.executors; + +import rx.Scheduler; + +public interface PostExecutionThread { + Scheduler getScheduler(); +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/executors/ThreadExecutor.java b/Habitica/src/main/java/com/habitrpg/android/habitica/executors/ThreadExecutor.java new file mode 100644 index 000000000..52fd1234b --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/executors/ThreadExecutor.java @@ -0,0 +1,5 @@ +package com.habitrpg.android.habitica.executors; + +import java.util.concurrent.Executor; + +public interface ThreadExecutor extends Executor {} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/executors/UIThread.java b/Habitica/src/main/java/com/habitrpg/android/habitica/executors/UIThread.java new file mode 100644 index 000000000..c763cb7ec --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/executors/UIThread.java @@ -0,0 +1,19 @@ +package com.habitrpg.android.habitica.executors; + +import javax.inject.Inject; +import javax.inject.Singleton; + +import rx.Scheduler; +import rx.android.schedulers.AndroidSchedulers; + +@Singleton +public class UIThread implements PostExecutionThread { + + @Inject + public UIThread() {} + + @Override + public Scheduler getScheduler() { + return AndroidSchedulers.mainThread(); + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/HabitScoreUseCase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/HabitScoreUseCase.java new file mode 100644 index 000000000..5844db1af --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/HabitScoreUseCase.java @@ -0,0 +1,48 @@ +package com.habitrpg.android.habitica.interactors; + +import com.habitrpg.android.habitica.data.TaskRepository; +import com.habitrpg.android.habitica.executors.PostExecutionThread; +import com.habitrpg.android.habitica.executors.ThreadExecutor; +import com.habitrpg.android.habitica.helpers.SoundManager; +import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; +import com.magicmicky.habitrpgwrapper.lib.models.responses.HabitResponse; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; + +import javax.inject.Inject; + +import rx.Observable; + +public class HabitScoreUseCase extends UseCase { + + + private TaskRepository taskRepository; + private SoundManager soundManager; + + @Inject + public HabitScoreUseCase(TaskRepository taskRepository, SoundManager soundManager, + ThreadExecutor threadExecutor, PostExecutionThread postExecutionThread) { + super(threadExecutor, postExecutionThread); + this.taskRepository = taskRepository; + this.soundManager = soundManager; + } + + @Override + protected Observable buildUseCaseObservable(RequestValues requestValues) { + return taskRepository.scoreHabit(requestValues.habit, requestValues.Up).doOnNext(res -> { + + soundManager.loadAndPlayAudio(requestValues.Up ? SoundManager.SoundPlusHabit : SoundManager.SoundMinusHabit); + }); + } + + public static final class RequestValues implements UseCase.RequestValues { + + protected boolean Up = false; + + protected final Task habit; + + public RequestValues(Task habit, boolean up) { + this.habit = habit; + this.Up = up; + } + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/ListTasksUseCase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/ListTasksUseCase.java new file mode 100644 index 000000000..ff0b07f58 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/ListTasksUseCase.java @@ -0,0 +1,39 @@ +package com.habitrpg.android.habitica.interactors; + +import com.habitrpg.android.habitica.data.TaskRepository; +import com.habitrpg.android.habitica.events.HabitScoreEvent; +import com.habitrpg.android.habitica.executors.PostExecutionThread; +import com.habitrpg.android.habitica.executors.ThreadExecutor; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; + +import java.util.ArrayList; + +import javax.inject.Inject; + +import rx.Observable; + +public class ListTasksUseCase extends UseCase> { + + private final TaskRepository taskRepository; + + @Inject + public ListTasksUseCase(TaskRepository taskRepository, ThreadExecutor threadExecutor, PostExecutionThread postExecutionThread) { + super(threadExecutor, postExecutionThread); + this.taskRepository = taskRepository; + } + + @Override + protected Observable> buildUseCaseObservable(ListTasksUseCase.RequestValues requestValues) { + return taskRepository.getTasks(requestValues.taskType); + } + + public static final class RequestValues implements UseCase.RequestValues { + + protected final String taskType; + + public RequestValues(String taskType) { + this.taskType = taskType; + } + } +} + diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/UseCase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/UseCase.java new file mode 100644 index 000000000..e5c8edd03 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/UseCase.java @@ -0,0 +1,34 @@ +package com.habitrpg.android.habitica.interactors; + +import com.habitrpg.android.habitica.executors.PostExecutionThread; +import com.habitrpg.android.habitica.executors.ThreadExecutor; + +import rx.Observable; + +public abstract class UseCase { + + private final ThreadExecutor threadExecutor; + private final PostExecutionThread postExecutionThread; + + protected UseCase(ThreadExecutor threadExecutor, + PostExecutionThread postExecutionThread) { + this.threadExecutor = threadExecutor; + this.postExecutionThread = postExecutionThread; + } + + /** + * Builds an {@link rx.Observable} which will be used when executing the current {@link UseCase}. + */ + protected abstract Observable buildUseCaseObservable(Q requestValues); + + @SuppressWarnings("unchecked") + public Observable observable(Q requestValues) { + return this.buildUseCaseObservable(requestValues) + .subscribeOn(postExecutionThread.getScheduler()) + .observeOn(postExecutionThread.getScheduler()); + } + + public interface RequestValues { + + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/ApiModule.java b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/ApiModule.java index 377d38656..93b740992 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/ApiModule.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/ApiModule.java @@ -3,6 +3,7 @@ package com.habitrpg.android.habitica.modules; import com.habitrpg.android.habitica.APIHelper; import com.habitrpg.android.habitica.ContentCache; import com.habitrpg.android.habitica.HostConfig; +import com.magicmicky.habitrpgwrapper.lib.api.ApiService; import com.magicmicky.habitrpgwrapper.lib.api.MaintenanceApiService; import android.content.Context; @@ -36,6 +37,13 @@ public class ApiModule { return new APIHelper(gsonConverter, hostConfig); } + @Provides + @Singleton + public ApiService providesApiService(APIHelper apiHelper) { + return apiHelper.apiService; + } + + @Provides @Singleton public ContentCache providesContentCache(APIHelper helper){ diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/AppModule.java b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/AppModule.java index b30ae19bb..277bab9f0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/AppModule.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/AppModule.java @@ -1,6 +1,10 @@ package com.habitrpg.android.habitica.modules; import com.habitrpg.android.habitica.R; +import com.habitrpg.android.habitica.executors.JobExecutor; +import com.habitrpg.android.habitica.executors.PostExecutionThread; +import com.habitrpg.android.habitica.executors.ThreadExecutor; +import com.habitrpg.android.habitica.executors.UIThread; import com.habitrpg.android.habitica.helpers.SoundFileLoader; import com.habitrpg.android.habitica.helpers.SoundManager; import com.habitrpg.android.habitica.helpers.TagsHelper; @@ -65,4 +69,18 @@ public class AppModule { public SoundManager providesSoundManager() { return new SoundManager(); } + + + @Provides + @Singleton + ThreadExecutor provideThreadExecutor(JobExecutor jobExecutor) { + return jobExecutor; + } + + + @Provides + @Singleton + PostExecutionThread providePostExecutionThread(UIThread uiThread) { + return uiThread; + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/RepositoryModule.java b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/RepositoryModule.java index 9231c4cca..e5860ca4d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/RepositoryModule.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/RepositoryModule.java @@ -1,13 +1,16 @@ package com.habitrpg.android.habitica.modules; +import com.habitrpg.android.habitica.APIHelper; import com.habitrpg.android.habitica.data.TaskRepository; import com.habitrpg.android.habitica.data.implementation.TaskRepositoryImpl; import com.habitrpg.android.habitica.data.local.TaskLocalRepository; import com.habitrpg.android.habitica.data.local.implementation.DbFlowTaskLocalRepository; import com.magicmicky.habitrpgwrapper.lib.api.ApiService; +import dagger.Module; import dagger.Provides; +@Module public class RepositoryModule { @Provides @@ -16,7 +19,7 @@ public class RepositoryModule { } @Provides - TaskRepository providesTaskRepository(TaskLocalRepository localRepository, ApiService apiService) { - return new TaskRepositoryImpl(localRepository, apiService); + TaskRepository providesTaskRepository(TaskLocalRepository localRepository, APIHelper apiHelper) { + return new TaskRepositoryImpl(localRepository, apiHelper); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java index 91d2e9365..1d93d196e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java @@ -46,6 +46,7 @@ import com.habitrpg.android.habitica.helpers.LanguageHelper; import com.habitrpg.android.habitica.helpers.SoundManager; import com.habitrpg.android.habitica.helpers.TaskAlarmManager; import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager; +import com.habitrpg.android.habitica.interactors.HabitScoreUseCase; import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy; import com.habitrpg.android.habitica.ui.AvatarView; import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel; @@ -195,6 +196,10 @@ public class MainActivity extends BaseActivity implements Action1, Ha View avatar_with_bars; @BindView(R.id.overlayFrameLayout) FrameLayout overlayFrameLayout; + + @Inject + HabitScoreUseCase habitScoreUseCase; + private Drawer drawer; private Drawer filterDrawer; private AccountHeader accountHeader; @@ -1500,12 +1505,13 @@ public class MainActivity extends BaseActivity implements Action1, Ha @Subscribe public void onEvent(HabitScoreEvent event) { - apiHelper.apiService.postTaskDirection(event.habit.getId(), (event.Up ? TaskDirection.up : TaskDirection.down).toString()) - .compose(apiHelper.configureApiCallObserver()) - .subscribe(new TaskScoringCallback(this, event.habit.getId()), throwable -> { - }); + habitScoreUseCase.observable(new HabitScoreUseCase.RequestValues(event.habit, event.Up)) + .subscribe(res -> { + onTaskDataReceived(res, event.habit); + }, error -> { - soundManager.loadAndPlayAudio(event.Up ? SoundManager.SoundPlusHabit : SoundManager.SoundMinusHabit); + + }); } @Subscribe diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/HabitRPGUser.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/HabitRPGUser.java index 6410844ea..6aeb5a272 100644 --- a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/HabitRPGUser.java +++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/HabitRPGUser.java @@ -126,7 +126,7 @@ public class HabitRPGUser extends BaseModel { this.challengeList = challenges; } - public void resetChallengeList(){ + public void resetChallengeList() { challengeList = null; } @@ -386,23 +386,25 @@ public class HabitRPGUser extends BaseModel { List challenges = getChallengeList(); - for (String s : getChallenges()) { - boolean challengeExistInDatabase = false; + if (this.challenges != null) { + for (String s : this.challenges) { + boolean challengeExistInDatabase = false; - for (Challenge challenge : challenges) { - if (challenge.id.equals(s)) { - challengeExistInDatabase = true; + for (Challenge challenge : challenges) { + if (challenge.id.equals(s)) { + challengeExistInDatabase = true; - break; + break; + } } - } - if (!challengeExistInDatabase) { - Challenge challenge = new Challenge(); - challenge.id = s; - challenge.user_id = id; + if (!challengeExistInDatabase) { + Challenge challenge = new Challenge(); + challenge.id = s; + challenge.user_id = id; - challenges.add(challenge); + challenges.add(challenge); + } } } From 6106bb2fa344863a26fdcd180ccdaae2cf560de2 Mon Sep 17 00:00:00 2001 From: Negue Date: Sat, 28 Jan 2017 20:27:35 +0100 Subject: [PATCH 03/34] rename APIHelper to ApiClient / IApiClient interface / remove uses of ApiService / use IApiClient instead / without compose calls --- .../{APIHelper.java => ApiClient.java} | 504 +++++++++++++++--- .../android/habitica/ContentCache.java | 17 +- .../habitica/HabiticaBaseApplication.java | 13 +- .../habitica/HabiticaPurchaseVerifier.java | 11 +- .../habitica/components/AppComponent.java | 7 +- .../android/habitica/data/TaskRepository.java | 3 +- .../implementation/BaseRepositoryImpl.java | 8 +- .../implementation/TaskRepositoryImpl.java | 27 +- .../data/local/TaskLocalRepository.java | 3 +- .../DbFlowTaskLocalRepository.java | 16 +- .../helpers/PopupNotificationsManager.java | 21 +- .../HabiticaFirebaseInstanceIDService.java | 8 - .../PushNotificationManager.java | 14 +- .../interactors/HabitScoreUseCase.java | 1 - .../android/habitica/modules/ApiModule.java | 22 +- .../habitica/modules/RepositoryModule.java | 7 +- .../LocalNotificationActionReceiver.java | 32 +- .../activities/ChallengeDetailActivity.java | 13 +- .../ui/activities/ClassSelectionActivity.java | 16 +- .../ui/activities/FullProfileActivity.java | 16 +- .../habitica/ui/activities/IntroActivity.java | 11 +- .../habitica/ui/activities/LoginActivity.java | 20 +- .../habitica/ui/activities/MainActivity.java | 105 ++-- .../ui/activities/MaintenanceActivity.java | 8 +- .../ui/activities/PartyInviteActivity.java | 14 +- .../habitica/ui/activities/SetupActivity.java | 22 +- .../ui/activities/SkillMemberActivity.java | 13 +- .../PublicGuildsRecyclerViewAdapter.java | 12 +- .../tasks/RewardsRecyclerViewAdapter.java | 17 +- .../ui/fragments/BaseMainFragment.java | 5 +- .../customization/AvatarOverviewFragment.java | 13 +- .../inventory/items/ItemsFragment.java | 4 +- .../inventory/shops/ShopFragment.java | 7 +- .../preferences/PreferencesFragment.java | 19 +- .../fragments/setup/AvatarSetupFragment.java | 6 +- .../ui/fragments/skills/SkillsFragment.java | 12 +- .../ui/fragments/social/ChatListFragment.java | 26 +- .../social/GroupInformationFragment.java | 36 +- .../ui/fragments/social/GuildFragment.java | 30 +- .../social/GuildsOverviewFragment.java | 6 +- .../ui/fragments/social/InboxFragment.java | 7 +- .../social/InboxMessageListFragment.java | 8 +- .../social/PublicGuildsFragment.java | 8 +- .../ui/fragments/social/TavernFragment.java | 5 +- .../ChallegeDetailDialogHolder.java | 22 +- .../ChallengeTasksRecyclerViewFragment.java | 4 +- .../ChallengesOverviewFragment.java | 8 +- .../fragments/social/party/PartyFragment.java | 17 +- .../tasks/TaskRecyclerViewFragment.java | 7 +- .../ui/fragments/tasks/TasksFragment.java | 36 +- .../widget/AvatarStatsWidgetProvider.java | 6 +- .../widget/DailiesWidgetProvider.java | 6 +- .../widget/HabitButtonWidgetProvider.java | 18 +- .../widget/TaskListWidgetProvider.java | 10 +- .../habitrpgwrapper/lib/api/IApiClient.java | 221 ++++++++ .../android/habitica/api/BaseAPITests.java | 10 +- .../android/habitica/api/SocialAPITests.java | 8 +- .../android/habitica/api/TagAPITests.java | 6 +- .../android/habitica/api/TaskAPITests.java | 16 +- .../android/habitica/api/UserAPITests.java | 11 +- .../PopupNotificationsManagerTest.java | 23 +- 61 files changed, 1044 insertions(+), 558 deletions(-) rename Habitica/src/main/java/com/habitrpg/android/habitica/{APIHelper.java => ApiClient.java} (52%) create mode 100644 Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/IApiClient.java diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/APIHelper.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ApiClient.java similarity index 52% rename from Habitica/src/main/java/com/habitrpg/android/habitica/APIHelper.java rename to Habitica/src/main/java/com/habitrpg/android/habitica/ApiClient.java index 563a02bb6..ae82ec677 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/APIHelper.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ApiClient.java @@ -10,9 +10,10 @@ import com.amplitude.api.Amplitude; import com.habitrpg.android.habitica.database.CheckListItemExcludeStrategy; import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy; import com.habitrpg.android.habitica.helpers.PopupNotificationsManager; -import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils; import com.magicmicky.habitrpgwrapper.lib.api.ApiService; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.magicmicky.habitrpgwrapper.lib.api.Server; +import com.magicmicky.habitrpgwrapper.lib.models.AchievementResult; import com.magicmicky.habitrpgwrapper.lib.models.Challenge; import com.magicmicky.habitrpgwrapper.lib.models.ChatMessage; import com.magicmicky.habitrpgwrapper.lib.models.ContentResult; @@ -20,10 +21,16 @@ import com.magicmicky.habitrpgwrapper.lib.models.Customization; import com.magicmicky.habitrpgwrapper.lib.models.FAQArticle; import com.magicmicky.habitrpgwrapper.lib.models.Group; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; -import com.magicmicky.habitrpgwrapper.lib.models.Notification; +import com.magicmicky.habitrpgwrapper.lib.models.Items; +import com.magicmicky.habitrpgwrapper.lib.models.PostChatMessageResult; import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationRequest; import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationResult; -import com.magicmicky.habitrpgwrapper.lib.models.notifications.Reward; +import com.magicmicky.habitrpgwrapper.lib.models.Quest; +import com.magicmicky.habitrpgwrapper.lib.models.Shop; +import com.magicmicky.habitrpgwrapper.lib.models.Status; +import com.magicmicky.habitrpgwrapper.lib.models.Tag; +import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; +import com.magicmicky.habitrpgwrapper.lib.models.responses.BuyResponse; import com.magicmicky.habitrpgwrapper.lib.models.responses.HabitResponse; import com.magicmicky.habitrpgwrapper.lib.models.Purchases; import com.magicmicky.habitrpgwrapper.lib.models.Skill; @@ -39,6 +46,8 @@ import com.magicmicky.habitrpgwrapper.lib.models.inventory.Mount; import com.magicmicky.habitrpgwrapper.lib.models.inventory.Pet; import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent; import com.magicmicky.habitrpgwrapper.lib.models.responses.FeedResponse; +import com.magicmicky.habitrpgwrapper.lib.models.responses.SkillResponse; +import com.magicmicky.habitrpgwrapper.lib.models.responses.UnlockResponse; import com.magicmicky.habitrpgwrapper.lib.models.tasks.ChecklistItem; import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData; import com.magicmicky.habitrpgwrapper.lib.models.tasks.RemindersItem; @@ -71,21 +80,8 @@ import com.magicmicky.habitrpgwrapper.lib.utils.TaskTagDeserializer; import com.magicmicky.habitrpgwrapper.lib.utils.TutorialStepListDeserializer; import com.raizlabs.android.dbflow.structure.ModelAdapter; -import org.json.JSONException; -import org.json.JSONObject; - import android.app.Activity; -import android.media.Image; -import android.os.Build; import android.support.v7.app.AlertDialog; -import android.util.Log; -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.Button; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; import java.io.IOException; import java.lang.annotation.Annotation; @@ -102,11 +98,8 @@ import java.util.Map; import javax.inject.Inject; import javax.net.ssl.SSLException; -import okhttp3.Interceptor; -import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; -import okhttp3.Response; import okhttp3.ResponseBody; import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.Converter; @@ -122,18 +115,18 @@ import rx.functions.Func2; import rx.schedulers.Schedulers; -public class APIHelper implements Action1 { - @Inject +public class ApiClient implements Action1, IApiClient { CrashlyticsProxy crashlyticsProxy; - // I think we don't need the APIHelper anymore we could just use ApiService - public final ApiService apiService; + // I think we don't need the ApiClient anymore we could just use ApiService + private final ApiService apiService; + final Observable.Transformer apiCallTransformer = observable -> ((Observable) observable) .map(new Func1() { @Override public Object call(HabitResponse habitResponse) { if (habitResponse.notifications != null) { - PopupNotificationsManager popupNotificationsManager = PopupNotificationsManager.getInstance(APIHelper.this); + PopupNotificationsManager popupNotificationsManager = PopupNotificationsManager.getInstance(ApiClient.this); popupNotificationsManager.showNotificationDialog(habitResponse.notifications); } return habitResponse.getData(); @@ -151,7 +144,7 @@ public class APIHelper implements Action1 { //private OnHabitsAPIResult mResultListener; //private HostConfig mConfig; - public APIHelper(GsonConverterFactory gsonConverter, HostConfig hostConfig) { + public ApiClient(GsonConverterFactory gsonConverter, HostConfig hostConfig, CrashlyticsProxy crashlyticsProxy) { this.gsonConverter = gsonConverter; this.hostConfig = hostConfig; HabiticaBaseApplication.getComponent().inject(this); @@ -269,30 +262,31 @@ public class APIHelper implements Action1 { return GsonConverterFactory.create(gson); } - public Observable> registerUser(String username, String email, String password, String confirmPassword) { + public Observable registerUser(String username, String email, String password, String confirmPassword) { UserAuth auth = new UserAuth(); auth.setUsername(username); auth.setPassword(password); auth.setConfirmPassword(confirmPassword); auth.setEmail(email); - return this.apiService.registerUser(auth); + return this.apiService.registerUser(auth).compose(configureApiCallObserver()); } - public Observable> connectUser(String username, String password) { + public Observable connectUser(String username, String password) { UserAuth auth = new UserAuth(); auth.setUsername(username); auth.setPassword(password); - return this.apiService.connectLocal(auth); + return this.apiService.connectLocal(auth).compose(configureApiCallObserver()); } - public Observable> connectSocial(String network, String userId, String accessToken) { + public Observable connectSocial(String network, String userId, String accessToken) { UserAuthSocial auth = new UserAuthSocial(); auth.setNetwork(network); UserAuthSocialTokens authResponse = new UserAuthSocialTokens(); authResponse.setClient_id(userId); authResponse.setAccess_token(accessToken); auth.setAuthResponse(authResponse); - return this.apiService.connectSocial(auth); + + return this.apiService.connectSocial(auth).compose(configureApiCallObserver()); } @Override @@ -341,42 +335,40 @@ public class APIHelper implements Action1 { } } - public Observable> retrieveUser(boolean withTasks) { - Observable> userObservable = apiService.getUser(); + public Observable retrieveUser(boolean withTasks) { + + Observable userObservable = apiService.getUser() + .compose(configureApiCallObserver()); + if (withTasks) { Observable> tasksObservable = apiService.getTasks(); userObservable = Observable.zip(userObservable, tasksObservable, - new Func2, HabitResponse, HabitResponse>() { - @Override - public HabitResponse call(HabitResponse habitRPGUserHabitResponse, HabitResponse taskListHabitResponse) { - HabitRPGUser habitRPGUser = habitRPGUserHabitResponse.getData(); - TaskList tasks = taskListHabitResponse.getData(); + (habitRPGUser, taskListHabitResponse) -> { + TaskList tasks = taskListHabitResponse.getData(); - habitRPGUser.setHabits(sortTasks(tasks.tasks, habitRPGUser.getTasksOrder().getHabits())); - habitRPGUser.setDailys(sortTasks(tasks.tasks, habitRPGUser.getTasksOrder().getDailys())); - habitRPGUser.setTodos(sortTasks(tasks.tasks, habitRPGUser.getTasksOrder().getTodos())); - habitRPGUser.setRewards(sortTasks(tasks.tasks, habitRPGUser.getTasksOrder().getRewards())); - for (Task task : tasks.tasks.values()) { - switch (task.getType()) { - case "habit": - habitRPGUser.getHabits().add(task); - break; - case "daily": - habitRPGUser.getDailys().add(task); - break; - case "todo": - habitRPGUser.getTodos().add(task); - break; - case "reward": - habitRPGUser.getRewards().add(task); - break; - } + habitRPGUser.setHabits(sortTasks(tasks.tasks, habitRPGUser.getTasksOrder().getHabits())); + habitRPGUser.setDailys(sortTasks(tasks.tasks, habitRPGUser.getTasksOrder().getDailys())); + habitRPGUser.setTodos(sortTasks(tasks.tasks, habitRPGUser.getTasksOrder().getTodos())); + habitRPGUser.setRewards(sortTasks(tasks.tasks, habitRPGUser.getTasksOrder().getRewards())); + for (Task task : tasks.tasks.values()) { + switch (task.getType()) { + case "habit": + habitRPGUser.getHabits().add(task); + break; + case "daily": + habitRPGUser.getDailys().add(task); + break; + case "todo": + habitRPGUser.getTodos().add(task); + break; + case "reward": + habitRPGUser.getRewards().add(task); + break; } - - habitRPGUserHabitResponse.data = habitRPGUser; - return habitRPGUserHabitResponse; } + + return habitRPGUser; }); } return userObservable; @@ -449,11 +441,399 @@ public class APIHelper implements Action1 { Amplitude.getInstance().setUserId(this.hostConfig.getUser()); } + @Override + public void setLanguageCode(String languageCode) { + this.languageCode = languageCode; + } + + @Override + public Observable getStatus() { + return apiService.getStatus().compose(configureApiCallObserver()); + } + + @Override + public Observable getContent(String language) { + return apiService.getContent(language).compose(configureApiCallObserver()); + } + + @Override + public Observable getUser() { + return apiService.getUser().compose(configureApiCallObserver()); + } + + @Override + public Observable updateUser(Map updateDictionary) { + return apiService.updateUser(updateDictionary).compose(configureApiCallObserver()); + } + + @Override + public Observable registrationLanguage(String registrationLanguage) { + return apiService.registrationLanguage(registrationLanguage).compose(configureApiCallObserver()); + } + + @Override + public Observable> getInventoryBuyableGear() { + return apiService.getInventoryBuyableGear().compose(configureApiCallObserver()); + } + + @Override + public Observable equipItem(String type, String itemKey) { + return apiService.equipItem(type, itemKey).compose(configureApiCallObserver()); + } + + @Override + public Observable buyItem(String itemKey) { + + return apiService.buyItem(itemKey).compose(configureApiCallObserver()); + } + + @Override + public Observable purchaseItem(String type, String itemKey) { + + return apiService.purchaseItem(type, itemKey).compose(configureApiCallObserver()); + } + + @Override + public Observable purchaseHourglassItem(String type, String itemKey) { + + return apiService.purchaseHourglassItem(type, itemKey).compose(configureApiCallObserver()); + } + + @Override + public Observable purchaseMysterySet(String itemKey) { + return apiService.purchaseMysterySet(itemKey).compose(configureApiCallObserver()); + } + + @Override + public Observable purchaseQuest(String key) { + return apiService.purchaseQuest(key).compose(configureApiCallObserver()); + } + + @Override + public Observable sellItem(String itemType, String itemKey) { + return apiService.sellItem(itemType, itemKey).compose(configureApiCallObserver()); + } + + @Override + public Observable feedPet(String petKey, String foodKey) { + return apiService.feedPet(petKey, foodKey).compose(configureApiCallObserver()); + } + + @Override + public Observable hatchPet(String eggKey, String hatchingPotionKey) { + return apiService.hatchPet(eggKey, hatchingPotionKey).compose(configureApiCallObserver()); + } + + @Override + public Observable getTasks() { + return apiService.getTasks().compose(configureApiCallObserver()); + } + + @Override + public Observable unlockPath(String path) { + return apiService.unlockPath(path).compose(configureApiCallObserver()); + } + + @Override + public Observable getTask(String id) { + return apiService.getTask(id).compose(configureApiCallObserver()); + } + + @Override + public Observable postTaskDirection(String id, String direction) { + return apiService.postTaskDirection(id, direction).compose(configureApiCallObserver()); + } + + @Override + public Observable> postTaskNewPosition(String id, String position) { + return apiService.postTaskNewPosition(id, position).compose(configureApiCallObserver()); + } + + @Override + public Observable scoreChecklistItem(String taskId, String itemId) { + return apiService.scoreChecklistItem(taskId, itemId).compose(configureApiCallObserver()); + } + + @Override + public Observable createItem(Task item) { + return apiService.createItem(item).compose(configureApiCallObserver()); + } + + @Override + public Observable> createTasks(List tasks) { + return apiService.createTasks(tasks).compose(configureApiCallObserver()); + } + + @Override + public Observable updateTask(String id, Task item) { + return apiService.updateTask(id, item).compose(configureApiCallObserver()); + } + + @Override + public Observable deleteTask(String id) { + return apiService.deleteTask(id).compose(configureApiCallObserver()); + } + + @Override + public Observable createTag(Tag tag) { + return apiService.createTag(tag).compose(configureApiCallObserver()); + } + + @Override + public Observable updateTag(String id, Tag tag) { + return apiService.updateTag(id, tag).compose(configureApiCallObserver()); + } + + @Override + public Observable deleteTag(String id) { + return apiService.deleteTag(id).compose(configureApiCallObserver()); + } + + @Override + public Observable registerUser(UserAuth auth) { + return apiService.registerUser(auth).compose(configureApiCallObserver()); + } + + @Override + public Observable connectLocal(UserAuth auth) { + return apiService.connectLocal(auth).compose(configureApiCallObserver()); + } + + @Override + public Observable connectSocial(UserAuthSocial auth) { + return apiService.connectSocial(auth).compose(configureApiCallObserver()); + } + + @Override + public Observable sleep() { + return apiService.sleep().compose(configureApiCallObserver()); + } + + @Override + public Observable revive() { + return apiService.revive().compose(configureApiCallObserver()); + } + + @Override + public Observable useSkill(String skillName, String targetType, String targetId) { + return apiService.useSkill(skillName, targetType, targetId).compose(configureApiCallObserver()); + } + + @Override + public Observable useSkill(String skillName, String targetType) { + return apiService.useSkill(skillName, targetType).compose(configureApiCallObserver()); + } + + @Override + public Observable changeClass() { + return apiService.changeClass().compose(configureApiCallObserver()); + } + + @Override + public Observable changeClass(String className) { + return apiService.changeClass(className).compose(configureApiCallObserver()); + } + + @Override + public Observable disableClasses() { + return apiService.disableClasses().compose(configureApiCallObserver()); + } + + @Override + public Observable markPrivateMessagesRead() { + return apiService.markPrivateMessagesRead().compose(configureApiCallObserver()); + } + + @Override + public Observable> listGroups(String type) { + return apiService.listGroups(type).compose(configureApiCallObserver()); + } + + @Override + public Observable getGroup(String groupId) { + return apiService.getGroup(groupId).compose(configureApiCallObserver()); + } + + @Override + public Observable updateGroup(String id, Group item) { + return apiService.updateGroup(id, item).compose(configureApiCallObserver()); + } + + @Override + public Observable> listGroupChat(String groupId) { + return apiService.listGroupChat(groupId).compose(configureApiCallObserver()); + } + + @Override + public Observable joinGroup(String groupId) { + return apiService.joinGroup(groupId).compose(configureApiCallObserver()); + } + + @Override + public Observable leaveGroup(String groupId) { + return apiService.leaveGroup(groupId).compose(configureApiCallObserver()); + } + + @Override + public Observable postGroupChat(String groupId, HashMap message) { + return apiService.postGroupChat(groupId, message).compose(configureApiCallObserver()); + } + + @Override + public Observable deleteMessage(String groupId, String messageId) { + return apiService.deleteMessage(groupId, messageId).compose(configureApiCallObserver()); + } + + @Override + public Observable> getGroupMembers(String groupId, Boolean includeAllPublicFields) { + return apiService.getGroupMembers(groupId, includeAllPublicFields).compose(configureApiCallObserver()); + } + + @Override + public Observable> getGroupMembers(String groupId, Boolean includeAllPublicFields, String lastId) { + return apiService.getGroupMembers(groupId, includeAllPublicFields, lastId).compose(configureApiCallObserver()); + } + + @Override + public Observable likeMessage(String groupId, String mid) { + return apiService.likeMessage(groupId, mid).compose(configureApiCallObserver()); + } + + @Override + public Observable flagMessage(String groupId, String mid) { + return apiService.flagMessage(groupId, mid).compose(configureApiCallObserver()); + } + + @Override + public Observable seenMessages(String groupId) { + return apiService.seenMessages(groupId).compose(configureApiCallObserver()); + } + + @Override + public Observable inviteToGroup(String groupId, Map inviteData) { + return apiService.inviteToGroup(groupId, inviteData).compose(configureApiCallObserver()); + } + + @Override + public Observable rejectGroupInvite(String groupId) { + return apiService.rejectGroupInvite(groupId).compose(configureApiCallObserver()); + } + + @Override + public Observable acceptQuest(String groupId) { + return apiService.acceptQuest(groupId).compose(configureApiCallObserver()); + } + + @Override + public Observable rejectQuest(String groupId) { + return apiService.rejectQuest(groupId).compose(configureApiCallObserver()); + } + + @Override + public Observable cancelQuest(String groupId) { + return apiService.cancelQuest(groupId).compose(configureApiCallObserver()); + } + + @Override + public Observable forceStartQuest(String groupId, Group group) { + return apiService.forceStartQuest(groupId,group).compose(configureApiCallObserver()); + } + + @Override + public Observable inviteToQuest(String groupId, String questKey) { + return apiService.inviteToQuest(groupId, questKey).compose(configureApiCallObserver()); + } + + @Override + public Observable abortQuest(String groupId) { + return apiService.abortQuest(groupId).compose(configureApiCallObserver()); + } + + @Override + public Observable leaveQuest(String groupId) { + return apiService.leaveQuest(groupId).compose(configureApiCallObserver()); + } + + @Override + public Observable validatePurchase(PurchaseValidationRequest request) { + return apiService.validatePurchase(request).compose(configureApiCallObserver()); + } + + @Override + public Observable changeCustomDayStart(Map updateObject) { + return apiService.changeCustomDayStart(updateObject).compose(configureApiCallObserver()); + } + + @Override + public Observable GetMember(String memberId) { + return apiService.GetMember(memberId).compose(configureApiCallObserver()); + } + + @Override + public Observable GetMemberAchievements(String memberId) { + return apiService.GetMemberAchievements(memberId).compose(configureApiCallObserver()); + } + + @Override + public Observable postPrivateMessage(HashMap messageDetails) { + return apiService.postPrivateMessage(messageDetails).compose(configureApiCallObserver()); + } + + @Override + public Observable fetchShopInventory(String identifier) { + return apiService.fetchShopInventory(identifier).compose(configureApiCallObserver()); + } + + @Override + public Observable addPushDevice(Map pushDeviceData) { + return apiService.addPushDevice(pushDeviceData).compose(configureApiCallObserver()); + } + + @Override + public Observable deletePushDevice(String regId) { + return apiService.deletePushDevice(regId).compose(configureApiCallObserver()); + } + + @Override + public Observable> getUserChallenges() { + return apiService.getUserChallenges().compose(configureApiCallObserver()); + } + + @Override + public Observable getChallengeTasks(String challengeId) { + return apiService.getChallengeTasks(challengeId).compose(configureApiCallObserver()); + } + + @Override + public Observable getChallenge(String challengeId) { + return apiService.getChallenge(challengeId).compose(configureApiCallObserver()); + } + + @Override + public Observable joinChallenge(String challengeId) { + return apiService.joinChallenge(challengeId).compose(configureApiCallObserver()); + } + + @Override + public Observable leaveChallenge(String challengeId) { + return apiService.leaveChallenge(challengeId).compose(configureApiCallObserver()); + } + + @Override + public Observable debugAddTenGems() { + return apiService.debugAddTenGems().compose(configureApiCallObserver()); + } + + @Override + public Observable readNotificaiton(String notificationId) { + return apiService.readNotificaiton(notificationId).compose(configureApiCallObserver()); + } + public static class ErrorResponse { public String message; } - public Observable>getContent() { - return apiService.getContent(languageCode); + public ObservablegetContent() { + return apiService.getContent(languageCode).compose(configureApiCallObserver()); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ContentCache.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ContentCache.java index a728f0b4d..5fb8aa1b9 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ContentCache.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ContentCache.java @@ -1,5 +1,6 @@ package com.habitrpg.android.habitica; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.magicmicky.habitrpgwrapper.lib.models.QuestBoss; import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent; import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData; @@ -12,16 +13,14 @@ import java.util.Collection; import java.util.List; import rx.Observable; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; public class ContentCache { - private APIHelper apiHelper; + private IApiClient apiClient; - public ContentCache(APIHelper apiHelper) { - this.apiHelper = apiHelper; + public ContentCache(IApiClient apiClient) { + this.apiClient = apiClient; } public void GetQuestContent(final String key, final QuestContentCallback cb) { @@ -71,8 +70,8 @@ public class ContentCache { } private void getContentAndSearchFor(final String typeOfSearch, final String searchKey, final GotContentEntryCallback gotEntry) { - apiHelper.getContent() - .compose(apiHelper.configureApiCallObserver()) + apiClient.getContent() + .subscribe(contentResult -> { switch (typeOfSearch) { case "quest": { @@ -114,8 +113,8 @@ public class ContentCache { private void getContentAndSearchForList(final String typeOfSearch, final List searchKeys, final GotContentEntryCallback> gotEntry) { List resultList = new ArrayList<>(); - apiHelper.getContent() - .compose(apiHelper.configureApiCallObserver()) + apiClient.getContent() + .flatMap(contentResult -> { List itemList = new ArrayList(contentResult.gear.flat); itemList.add(contentResult.potion); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.java b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.java index 2655c180c..e05972888 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.java @@ -26,6 +26,7 @@ import com.habitrpg.android.habitica.helpers.PurchaseTypes; 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.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; import com.raizlabs.android.dbflow.config.FlowManager; import com.squareup.leakcanary.LeakCanary; @@ -50,7 +51,7 @@ public abstract class HabiticaBaseApplication extends MultiDexApplication { public static HabitRPGUser User; public static Activity currentActivity = null; @Inject - Lazy lazyApiHelper; + Lazy lazyApiHelper; @Inject SharedPreferences sharedPrefs; @Inject @@ -158,15 +159,11 @@ public abstract class HabiticaBaseApplication extends MultiDexApplication { int lastInstalledVersion = sharedPrefs.getInt("last_installed_version", 0); if (lastInstalledVersion < info.versionCode) { sharedPrefs.edit().putInt("last_installed_version", info.versionCode).apply(); - APIHelper apiHelper = this.lazyApiHelper.get(); + IApiClient apiClient = this.lazyApiHelper.get(); - apiHelper.apiService.getContent(apiHelper.languageCode) - .compose(this.lazyApiHelper.get().configureApiCallObserver()) - .subscribe(contentResult -> { - }, throwable -> { - }); + apiClient.getContent() + .subscribe(contentResult -> { }, throwable -> {}); } - } private void setupDagger() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.java b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.java index 736013265..d7d7ffe1d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.java @@ -1,6 +1,7 @@ package com.habitrpg.android.habitica; import com.habitrpg.android.habitica.helpers.PurchaseTypes; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationRequest; import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationResult; import com.magicmicky.habitrpgwrapper.lib.models.Transaction; @@ -29,16 +30,16 @@ import retrofit2.adapter.rxjava.HttpException; public class HabiticaPurchaseVerifier extends BasePurchaseVerifier { private static final String PURCHASED_PRODUCTS_KEY = "PURCHASED_PRODUCTS"; - private final APIHelper apiHelper; + private final IApiClient apiClient; private Set purchasedOrderList = new HashSet<>(); private SharedPreferences preferences; - public HabiticaPurchaseVerifier(Context context, APIHelper apiHelper) { + public HabiticaPurchaseVerifier(Context context, IApiClient apiClient) { preferences = PreferenceManager.getDefaultSharedPreferences(context); preferences.getStringSet(PURCHASED_PRODUCTS_KEY, purchasedOrderList); - this.apiHelper = apiHelper; + this.apiClient = apiClient; } @Override @@ -56,7 +57,7 @@ public class HabiticaPurchaseVerifier extends BasePurchaseVerifier { validationRequest.transaction.receipt = purchase.data; validationRequest.transaction.signature = purchase.signature; - apiHelper.apiService.validatePurchase(validationRequest).subscribe(purchaseValidationResult -> { + apiClient.validatePurchase(validationRequest).subscribe(purchaseValidationResult -> { purchasedOrderList.add(purchase.orderId); verifiedPurchases.add(purchase); @@ -76,7 +77,7 @@ public class HabiticaPurchaseVerifier extends BasePurchaseVerifier { }, throwable -> { if (throwable.getClass().equals(HttpException.class)) { HttpException error = (HttpException)throwable; - APIHelper.ErrorResponse res = apiHelper.getErrorResponse((HttpException) throwable); + ApiClient.ErrorResponse res = apiClient.getErrorResponse((HttpException) throwable); if (error.code() == 401) { if (res.message.equals("RECEIPT_ALREADY_USED")) { purchasedOrderList.add(purchase.orderId); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java b/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java index 53a44e3af..3811a86fb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.components; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HabiticaBaseApplication; import com.habitrpg.android.habitica.helpers.RemindersManager; import com.habitrpg.android.habitica.helpers.SoundManager; @@ -74,13 +74,14 @@ import com.habitrpg.android.habitica.widget.DailiesWidgetProvider; import com.habitrpg.android.habitica.widget.HabitButtonWidgetProvider; import com.habitrpg.android.habitica.widget.HabitButtonWidgetService; import com.habitrpg.android.habitica.widget.TaskListWidgetProvider; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import javax.inject.Singleton; import dagger.Component; @Singleton -@Component(modules = {AppModule.class, ApiModule.class, DeveloperModule.class, RepositoryModule.class}) +@Component(modules = {DeveloperModule.class, AppModule.class, ApiModule.class, RepositoryModule.class}) public interface AppComponent { void inject(ClassSelectionActivity classSelectionActivity); @@ -205,7 +206,7 @@ public interface AppComponent { void inject(ChallengeDetailActivity challengeDetailActivity); - void inject(APIHelper apiHelper); + void inject(IApiClient apiClient); void inject(TaskListWidgetProvider taskListWidgetProvider); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java index a89543c43..1fd73845b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java @@ -3,6 +3,7 @@ package com.habitrpg.android.habitica.data; import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; import com.magicmicky.habitrpgwrapper.lib.models.responses.HabitResponse; import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskList; import com.magicmicky.habitrpgwrapper.lib.models.tasks.TasksOrder; import java.util.ArrayList; @@ -12,7 +13,7 @@ import rx.Observable; public interface TaskRepository extends BaseRepository { Observable> getTasks(String taskType); - Observable>> refreshTasks(TasksOrder tasksOrder); + Observable refreshTasks(TasksOrder tasksOrder); Observable scoreHabit(Task task, boolean up); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.java index 58fc38eee..a4c0e8898 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.java @@ -2,16 +2,16 @@ package com.habitrpg.android.habitica.data.implementation; import com.habitrpg.android.habitica.data.BaseRepository; import com.habitrpg.android.habitica.data.local.BaseLocalRepository; -import com.magicmicky.habitrpgwrapper.lib.api.ApiService; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; public abstract class BaseRepositoryImpl implements BaseRepository { protected final T localRepository; - protected final ApiService apiService; + protected final IApiClient apiClient; - public BaseRepositoryImpl(T localRepository, ApiService apiService) { + public BaseRepositoryImpl(T localRepository, IApiClient apiClient) { this.localRepository = localRepository; - this.apiService = apiService; + this.apiClient = apiClient; } public void close() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java index ebcdd5565..f5ba97ab1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java @@ -1,15 +1,12 @@ package com.habitrpg.android.habitica.data.implementation; -import com.habitrpg.android.habitica.APIHelper; -import com.habitrpg.android.habitica.R; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.data.TaskRepository; import com.habitrpg.android.habitica.data.local.TaskLocalRepository; -import com.habitrpg.android.habitica.ui.helpers.UiUtils; -import com.magicmicky.habitrpgwrapper.lib.api.ApiService; import com.magicmicky.habitrpgwrapper.lib.models.TaskDirection; import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; -import com.magicmicky.habitrpgwrapper.lib.models.responses.HabitResponse; import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskList; import com.magicmicky.habitrpgwrapper.lib.models.tasks.TasksOrder; import java.util.ArrayList; @@ -19,12 +16,8 @@ import rx.Observable; public class TaskRepositoryImpl extends BaseRepositoryImpl implements TaskRepository { - - private APIHelper apiHelper; - - public TaskRepositoryImpl(TaskLocalRepository localRepository, APIHelper apiHelper) { - super(localRepository, apiHelper.apiService); - this.apiHelper = apiHelper; + public TaskRepositoryImpl(TaskLocalRepository localRepository, IApiClient apiClient) { + super(localRepository, apiClient); } @Override @@ -33,25 +26,21 @@ public class TaskRepositoryImpl extends BaseRepositoryImpl } @Override - public Observable>> refreshTasks(TasksOrder tasksOrder) { - return this.apiService.getUserTasks() - .doOnNext(res -> this.localRepository.saveTasks(tasksOrder, res.data)); + public Observable refreshTasks(TasksOrder tasksOrder) { + return this.apiClient.getTasks() + .doOnNext(res -> this.localRepository.saveTasks(tasksOrder, res)); } @Override public Observable scoreHabit(Task task, boolean up) { - return this.apiService.postTaskDirection(task.getId(), (up ? TaskDirection.up : TaskDirection.down).toString()) - .compose(apiHelper.configureApiCallObserver()) + return this.apiClient.postTaskDirection(task.getId(), (up ? TaskDirection.up : TaskDirection.down).toString()) .doOnNext(res -> { - // save local task changes if (task != null && task.type != null && !task.type.equals("reward")) { task.value = task.value + res.getDelta(); this.localRepository.saveTask(task); } - - // play sound }); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.java index e2954db45..656c2176f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.java @@ -1,6 +1,7 @@ package com.habitrpg.android.habitica.data.local; import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskList; import com.magicmicky.habitrpgwrapper.lib.models.tasks.TasksOrder; import java.util.ArrayList; @@ -11,7 +12,7 @@ public interface TaskLocalRepository extends BaseLocalRepository { Observable> getTasks(String taskType); - void saveTasks(TasksOrder tasksOrder, ArrayList tasks); + void saveTasks(TasksOrder tasksOrder, TaskList tasks); void saveTask(Task task); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/DbFlowTaskLocalRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/DbFlowTaskLocalRepository.java index f650ab5d8..c5dfa086e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/DbFlowTaskLocalRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/DbFlowTaskLocalRepository.java @@ -2,6 +2,7 @@ package com.habitrpg.android.habitica.data.local.implementation; import com.habitrpg.android.habitica.data.local.TaskLocalRepository; import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskList; import com.magicmicky.habitrpgwrapper.lib.models.tasks.TasksOrder; import java.util.ArrayList; @@ -18,7 +19,7 @@ public class DbFlowTaskLocalRepository implements TaskLocalRepository { } @Override - public void saveTasks(TasksOrder tasksOrder, ArrayList tasks) { + public void saveTasks(TasksOrder tasksOrder, TaskList tasks) { sortTasks(tasks, tasksOrder.getHabits()); sortTasks(tasks, tasksOrder.getDailys()); sortTasks(tasks, tasksOrder.getTodos()); @@ -39,26 +40,21 @@ public class DbFlowTaskLocalRepository implements TaskLocalRepository { task.async().save(); } - private List sortTasks(List taskList, List taskOrder) { + private List sortTasks(TaskList taskList, List taskOrder) { List taskResult = new ArrayList<>(); int position = 0; - HashMap taskMap = new HashMap<>(); - - for (Task t : taskList){ - taskMap.put(t.getId(), t); - } for (String taskId : taskOrder) { - Task task = taskMap.get(taskId); + Task task = taskList.tasks.get(taskId); if (task != null) { task.position = position; taskResult.add(task); position++; - taskMap.remove(taskId); + taskList.tasks.remove(taskId); } } - return taskList; + return taskResult; } @Override diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManager.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManager.java index 86be64a8b..b53b3d06a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManager.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManager.java @@ -4,15 +4,13 @@ import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; -import android.widget.ImageView; import android.widget.TextView; -import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.view.SimpleDraweeView; -import com.habitrpg.android.habitica.APIHelper; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.magicmicky.habitrpgwrapper.lib.models.Notification; import com.magicmicky.habitrpgwrapper.lib.models.notifications.Reward; @@ -26,17 +24,17 @@ import java.util.Map; public class PopupNotificationsManager { private Map seenNotifications; - private APIHelper apiHelper; + private IApiClient apiClient; private static PopupNotificationsManager instance; // @TODO: A queue for displaying alert dialogues - private PopupNotificationsManager(APIHelper apiHelper) { - this.apiHelper = apiHelper; + private PopupNotificationsManager(IApiClient apiClient) { + this.apiClient = apiClient; this.seenNotifications = new HashMap<>(); } - public static PopupNotificationsManager getInstance(APIHelper apiHelper) { + public static PopupNotificationsManager getInstance(IApiClient apiHelper) { if (instance == null) { instance = new PopupNotificationsManager(apiHelper); } @@ -90,13 +88,10 @@ public class PopupNotificationsManager { confirmButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - if (apiHelper != null) { + if (apiClient != null) { // @TODO: This should be handled somewhere else? MAybe we notifiy via event - apiHelper.apiService.readNotificaiton(notification.getId()) - .compose(apiHelper.configureApiCallObserver()) - .subscribe(next -> { - }, throwable -> { - }); + apiClient.readNotificaiton(notification.getId()) + .subscribe(next -> {}, throwable -> {}); } dialog.hide(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaFirebaseInstanceIDService.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaFirebaseInstanceIDService.java index c9504930a..22624399e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaFirebaseInstanceIDService.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaFirebaseInstanceIDService.java @@ -1,15 +1,7 @@ package com.habitrpg.android.habitica.helpers.notifications; -import android.util.Log; - import com.google.firebase.iid.FirebaseInstanceId; import com.google.firebase.iid.FirebaseInstanceIdService; -import com.habitrpg.android.habitica.APIHelper; - -import java.util.HashMap; -import java.util.Map; - -import javax.inject.Inject; /** * Created by keithholliday on 6/24/16. diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java index 2afcf899f..8f7b23442 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java @@ -3,13 +3,11 @@ package com.habitrpg.android.habitica.helpers.notifications; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; -import android.util.Log; import com.google.firebase.iid.FirebaseInstanceId; import com.google.firebase.messaging.RemoteMessage; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HabiticaApplication; -import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; import com.magicmicky.habitrpgwrapper.lib.models.PushDevice; @@ -37,7 +35,7 @@ public class PushNotificationManager { @Inject - public APIHelper apiHelper; + public IApiClient apiClient; private String refreshedToken; private SharedPreferences sharedPreferences; @@ -96,14 +94,14 @@ public class PushNotificationManager { Map pushDeviceData = new HashMap(); pushDeviceData.put("regId", this.refreshedToken); pushDeviceData.put("type", "android"); - apiHelper.apiService.addPushDevice(pushDeviceData) - .compose(apiHelper.configureApiCallObserver()) + apiClient.addPushDevice(pushDeviceData) + .subscribe(aVoid -> {}, throwable -> {}); } public void removePushDeviceUsingStoredToken () { - apiHelper.apiService.deletePushDevice(this.refreshedToken) - .compose(apiHelper.configureApiCallObserver()) + apiClient.deletePushDevice(this.refreshedToken) + .subscribe(aVoid -> {}, throwable -> {}); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/HabitScoreUseCase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/HabitScoreUseCase.java index 5844db1af..e96d49854 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/HabitScoreUseCase.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/HabitScoreUseCase.java @@ -5,7 +5,6 @@ import com.habitrpg.android.habitica.executors.PostExecutionThread; import com.habitrpg.android.habitica.executors.ThreadExecutor; import com.habitrpg.android.habitica.helpers.SoundManager; import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; -import com.magicmicky.habitrpgwrapper.lib.models.responses.HabitResponse; import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; import javax.inject.Inject; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/ApiModule.java b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/ApiModule.java index 93b740992..65fe94ad8 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/ApiModule.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/ApiModule.java @@ -1,9 +1,10 @@ package com.habitrpg.android.habitica.modules; -import com.habitrpg.android.habitica.APIHelper; +import com.habitrpg.android.habitica.ApiClient; +import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.ContentCache; import com.habitrpg.android.habitica.HostConfig; -import com.magicmicky.habitrpgwrapper.lib.api.ApiService; import com.magicmicky.habitrpgwrapper.lib.api.MaintenanceApiService; import android.content.Context; @@ -28,26 +29,19 @@ public class ApiModule { @Provides public GsonConverterFactory providesGsonConverterFactory() { - return APIHelper.createGsonFactory(); + return ApiClient.createGsonFactory(); } @Provides @Singleton - public APIHelper providesApiHelper(GsonConverterFactory gsonConverter, HostConfig hostConfig) { - return new APIHelper(gsonConverter, hostConfig); + public IApiClient providesApiHelper(GsonConverterFactory gsonConverter, HostConfig hostConfig, CrashlyticsProxy crashlyticsProxy) { + return new ApiClient(gsonConverter, hostConfig, crashlyticsProxy); } @Provides @Singleton - public ApiService providesApiService(APIHelper apiHelper) { - return apiHelper.apiService; - } - - - @Provides - @Singleton - public ContentCache providesContentCache(APIHelper helper){ - return new ContentCache(helper); + public ContentCache providesContentCache(IApiClient client){ + return new ContentCache(client); } @Provides diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/RepositoryModule.java b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/RepositoryModule.java index e5860ca4d..ccc8ca042 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/RepositoryModule.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/RepositoryModule.java @@ -1,11 +1,10 @@ package com.habitrpg.android.habitica.modules; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.data.TaskRepository; import com.habitrpg.android.habitica.data.implementation.TaskRepositoryImpl; import com.habitrpg.android.habitica.data.local.TaskLocalRepository; import com.habitrpg.android.habitica.data.local.implementation.DbFlowTaskLocalRepository; -import com.magicmicky.habitrpgwrapper.lib.api.ApiService; import dagger.Module; import dagger.Provides; @@ -19,7 +18,7 @@ public class RepositoryModule { } @Provides - TaskRepository providesTaskRepository(TaskLocalRepository localRepository, APIHelper apiHelper) { - return new TaskRepositoryImpl(localRepository, apiHelper); + TaskRepository providesTaskRepository(TaskLocalRepository localRepository, IApiClient apiClient) { + return new TaskRepositoryImpl(localRepository, apiClient); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/LocalNotificationActionReceiver.java b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/LocalNotificationActionReceiver.java index 506b41c67..116e9baaf 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/LocalNotificationActionReceiver.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/LocalNotificationActionReceiver.java @@ -6,9 +6,8 @@ import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.os.Bundle; -import android.util.Log; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback; @@ -21,7 +20,7 @@ import javax.inject.Inject; */ public class LocalNotificationActionReceiver extends BroadcastReceiver implements HabitRPGUserCallback.OnUserReceived { @Inject - public APIHelper apiHelper; + public IApiClient apiClient; private HabitRPGUser user; private String action; @@ -38,8 +37,7 @@ public class LocalNotificationActionReceiver extends BroadcastReceiver implement this.intent = intent; this.context = context; - this.apiHelper.apiService.getUser() - .compose(this.apiHelper.configureApiCallObserver()) + this.apiClient.getUser() .subscribe(new HabitRPGUserCallback(this), throwable -> {}); } @@ -57,40 +55,40 @@ public class LocalNotificationActionReceiver extends BroadcastReceiver implement if (action.equals(this.resources.getString(R.string.accept_party_invite))) { if (this.user.getInvitations().getParty() == null) return; String partyId = this.user.getInvitations().getParty().getId(); - apiHelper.apiService.joinGroup(partyId) - .compose(apiHelper.configureApiCallObserver()) + apiClient.joinGroup(partyId) + .subscribe(aVoid -> {}, throwable -> {}); } else if (action.equals(this.resources.getString(R.string.reject_party_invite))) { if (this.user.getInvitations().getParty() == null) return; String partyId = this.user.getInvitations().getParty().getId(); - apiHelper.apiService.rejectGroupInvite(partyId) - .compose(apiHelper.configureApiCallObserver()) + apiClient.rejectGroupInvite(partyId) + .subscribe(aVoid -> {}, throwable -> {}); } else if (action.equals(this.resources.getString(R.string.accept_quest_invite))) { if (this.user.getParty() == null) return; String partyId = this.user.getParty().getId(); - apiHelper.apiService.acceptQuest(partyId) - .compose(apiHelper.configureApiCallObserver()) + apiClient.acceptQuest(partyId) + .subscribe(aVoid -> {}, throwable -> {}); } else if (action.equals(this.resources.getString(R.string.reject_quest_invite))) { if (this.user.getParty() == null) return; String partyId = this.user.getParty().getId(); - apiHelper.apiService.rejectQuest(partyId) - .compose(apiHelper.configureApiCallObserver()) + apiClient.rejectQuest(partyId) + .subscribe(aVoid -> {}, throwable -> {}); } else if (action.equals(this.resources.getString(R.string.accept_guild_invite))) { Bundle extras = this.intent.getExtras(); String guildId = extras.getString("groupID"); if (guildId == null) return; - apiHelper.apiService.joinGroup(guildId) - .compose(apiHelper.configureApiCallObserver()) + apiClient.joinGroup(guildId) + .subscribe(aVoid -> {}, throwable -> {}); } else if (action.equals(this.resources.getString(R.string.reject_guild_invite))) { Bundle extras = this.intent.getExtras(); String guildId = extras.getString("groupID"); if (guildId == null) return; - apiHelper.apiService.rejectGroupInvite(guildId) - .compose(apiHelper.configureApiCallObserver()) + apiClient.rejectGroupInvite(guildId) + .subscribe(aVoid -> {}, throwable -> {}); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java index 73731ad6b..a4dcd1452 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java @@ -15,7 +15,7 @@ import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; @@ -50,7 +50,7 @@ public class ChallengeDetailActivity extends BaseActivity { Toolbar toolbar; @Inject - public APIHelper apiHelper; + public IApiClient apiClient; private ChallengeViewHolder challengeViewHolder; @@ -84,8 +84,7 @@ public class ChallengeDetailActivity extends BaseActivity { ObservableList fullList = new ObservableArrayList<>(); - apiHelper.apiService.getChallengeTasks(challengeId) - .compose(this.apiHelper.configureApiCallObserver()) + apiClient.getChallengeTasks(challengeId) .subscribe(taskList -> { ArrayList resultList = new ArrayList<>(); @@ -227,7 +226,7 @@ public class ChallengeDetailActivity extends BaseActivity { @OnClick(R.id.btn_show_more) public void onShowMore() { - ChallegeDetailDialogHolder.showDialog(ChallengeDetailActivity.this, ChallengeDetailActivity.this.apiHelper, + ChallegeDetailDialogHolder.showDialog(ChallengeDetailActivity.this, ChallengeDetailActivity.this.apiClient, HabiticaApplication.User, challenge, challenge1 -> { @@ -244,8 +243,8 @@ public class ChallengeDetailActivity extends BaseActivity { .setTitle(this.getString(R.string.challenge_leave_title)) .setMessage(String.format(this.getString(R.string.challenge_leave_text), challenge.name)) .setPositiveButton(this.getString(R.string.yes), (dialog, which) -> { - this.apiHelper.apiService.leaveChallenge(challenge.id) - .compose(apiHelper.configureApiCallObserver()) + this.apiClient.leaveChallenge(challenge.id) + .subscribe(aVoid -> { challenge.user_id = null; challenge.async().save(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ClassSelectionActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ClassSelectionActivity.java index 4d7796de7..621af1aa2 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ClassSelectionActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ClassSelectionActivity.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.ui.activities; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.ui.AvatarView; @@ -10,7 +10,6 @@ import com.magicmicky.habitrpgwrapper.lib.models.Hair; import com.magicmicky.habitrpgwrapper.lib.models.Items; import com.magicmicky.habitrpgwrapper.lib.models.Outfit; import com.magicmicky.habitrpgwrapper.lib.models.Preferences; -import com.magicmicky.habitrpgwrapper.lib.models.responses.HabitResponse; import android.app.ProgressDialog; import android.content.Intent; @@ -40,7 +39,7 @@ public class ClassSelectionActivity extends BaseActivity implements Action1 { classWasUnset = true; }, throwable -> { @@ -206,8 +204,8 @@ public class ClassSelectionActivity extends BaseActivity implements Action1 { }); } @@ -215,8 +213,8 @@ public class ClassSelectionActivity extends BaseActivity implements Action1 { }); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java index dc40eeb85..95ce084eb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java @@ -23,7 +23,7 @@ import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.controller.BaseControllerListener; import com.facebook.drawee.view.SimpleDraweeView; import com.facebook.imagepipeline.image.ImageInfo; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.ContentCache; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.R; @@ -62,7 +62,7 @@ public class FullProfileActivity extends BaseActivity { ContentCache contentCache; @Inject - APIHelper apiHelper; + IApiClient apiClient; @BindView(R.id.profile_image) SimpleDraweeView profile_image; @@ -138,8 +138,8 @@ public class FullProfileActivity extends BaseActivity { setTitle(R.string.profile_loading_data); - apiHelper.apiService.GetMember(this.userId) - .compose(apiHelper.configureApiCallObserver()) + apiClient.GetMember(this.userId) + .subscribe(this::updateView, throwable -> { }); @@ -189,8 +189,8 @@ public class FullProfileActivity extends BaseActivity { messageObject.put("message", emojiEditText.getText().toString()); messageObject.put("toUserId", userId); - apiHelper.apiService.postPrivateMessage(messageObject) - .compose(apiHelper.configureApiCallObserver()) + apiClient.postPrivateMessage(messageObject) + .subscribe(postChatMessageResult -> { UiUtils.showSnackbar(FullProfileActivity.this, FullProfileActivity.this.fullprofile_scrollview, String.format(getString(R.string.profile_message_sent_to), userName), UiUtils.SnackbarDisplayType.NORMAL); @@ -262,8 +262,8 @@ public class FullProfileActivity extends BaseActivity { mountsTamedCount.setText(String.valueOf(user.getMountsTamedCount())); // Load the members achievements now - apiHelper.apiService.GetMemberAchievements(this.userId) - .compose(apiHelper.configureApiCallObserver()) + apiClient.GetMemberAchievements(this.userId) + .subscribe(this::fillAchievements, throwable -> { }); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/IntroActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/IntroActivity.java index 8311c39c4..c1dbde59c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/IntroActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/IntroActivity.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.ui.activities; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.ui.fragments.setup.IntroFragment; @@ -22,7 +22,7 @@ import butterknife.BindView; public class IntroActivity extends BaseActivity implements View.OnClickListener, ViewPager.OnPageChangeListener { @Inject - public APIHelper apiHelper; + public IApiClient apiClient; @BindView(R.id.view_pager) ViewPager pager; @BindView(R.id.view_pager_indicator) @@ -49,11 +49,8 @@ public class IntroActivity extends BaseActivity implements View.OnClickListener, this.skipButton.setOnClickListener(this); this.finishButton.setOnClickListener(this); - apiHelper.apiService.getContent(apiHelper.languageCode) - .compose(apiHelper.configureApiCallObserver()) - .subscribe(contentResult -> { - }, throwable -> { - }); + apiClient.getContent() + .subscribe(contentResult -> {}, throwable -> {}); } @Override diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/LoginActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/LoginActivity.java index 493b852ea..4750a5459 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/LoginActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/LoginActivity.java @@ -14,7 +14,7 @@ import com.facebook.FacebookCallback; import com.facebook.FacebookException; import com.facebook.login.LoginResult; import com.facebook.login.widget.LoginButton; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.BuildConfig; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback; @@ -77,7 +77,7 @@ public class LoginActivity extends BaseActivity @Inject - public APIHelper apiHelper; + public IApiClient apiClient; @Inject public SharedPreferences sharedPrefs; public String mTmpUserToken; @@ -131,8 +131,7 @@ public class LoginActivity extends BaseActivity @Override public void onSuccess(LoginResult loginResult) { AccessToken accessToken = AccessToken.getCurrentAccessToken(); - apiHelper.connectSocial("facebook", accessToken.getUserId(), accessToken.getToken()) - .compose(apiHelper.configureApiCallObserver()) + apiClient.connectSocial("facebook", accessToken.getUserId(), accessToken.getToken()) .subscribe(LoginActivity.this, throwable -> { hideProgress(); }); @@ -193,8 +192,7 @@ public class LoginActivity extends BaseActivity showValidationError(R.string.login_validation_error_fieldsmissing); return; } - apiHelper.registerUser(username,email,password, cpassword) - .compose(apiHelper.configureApiCallObserver()) + apiClient.registerUser(username,email,password, cpassword) .subscribe(LoginActivity.this, throwable -> {hideProgress();}); } else { String username,password; @@ -204,8 +202,8 @@ public class LoginActivity extends BaseActivity showValidationError(R.string.login_validation_error_fieldsmissing); return; } - apiHelper.connectUser(username,password) - .compose(apiHelper.configureApiCallObserver()) + apiClient.connectUser(username,password) + .subscribe(LoginActivity.this, throwable -> {hideProgress();}); } } @@ -343,7 +341,7 @@ public class LoginActivity extends BaseActivity } private void saveTokens(String api, String user) throws Exception { - this.apiHelper.updateAuthenticationCredentials(user, api); + this.apiClient.updateAuthenticationCredentials(user, api); SharedPreferences.Editor editor = sharedPrefs.edit(); boolean ans = editor.putString(getString(R.string.SP_APIToken), api) .putString(getString(R.string.SP_userID), user) @@ -421,8 +419,8 @@ public class LoginActivity extends BaseActivity throw Exceptions.propagate(e); } }) - .flatMap(token -> apiHelper.connectSocial("google", googleEmail, token)) - .compose(apiHelper.configureApiCallObserver()) + .flatMap(token -> apiClient.connectSocial("google", googleEmail, token)) + .subscribe(LoginActivity.this, throwable -> { hideProgress(); if (throwable.getCause() != null && GoogleAuthException.class.isAssignableFrom(throwable.getCause().getClass())) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java index c57490db9..d844ff981 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java @@ -1,7 +1,7 @@ package com.habitrpg.android.habitica.ui.activities; import com.facebook.drawee.view.SimpleDraweeView; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.HostConfig; import com.habitrpg.android.habitica.R; @@ -59,6 +59,7 @@ import com.habitrpg.android.habitica.widget.AvatarStatsWidgetProvider; import com.habitrpg.android.habitica.widget.DailiesWidgetProvider; import com.habitrpg.android.habitica.widget.HabitButtonWidgetProvider; import com.habitrpg.android.habitica.widget.TodoListWidgetProvider; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.magicmicky.habitrpgwrapper.lib.api.MaintenanceApiService; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; import com.magicmicky.habitrpgwrapper.lib.models.Preferences; @@ -167,7 +168,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha public static final int GEM_PURCHASE_REQUEST = 111; public static final int MIN_LEVEL_FOR_SKILLS = 11; @Inject - public APIHelper apiHelper; + public IApiClient apiClient; @Inject public SoundManager soundManager; @@ -295,9 +296,8 @@ public class MainActivity extends BaseActivity implements Action1, Ha //resync, if last sync was more than 10 minutes ago if (this.lastSync == null || (new Date().getTime() - this.lastSync.getTime()) > 180000) { - if (this.apiHelper != null && this.apiHelper.hasAuthenticationKeys()) { - this.apiHelper.retrieveUser(true) - .compose(apiHelper.configureApiCallObserver()) + if (this.apiClient != null && this.apiClient.hasAuthenticationKeys()) { + this.apiClient.retrieveUser(true) .subscribe(new HabitRPGUserCallback(this), throwable -> { }); this.checkMaintenance(); @@ -403,7 +403,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha Preferences preferences = user.getPreferences(); if(preferences!= null) { - apiHelper.languageCode = preferences.getLanguage(); + apiClient.setLanguageCode(preferences.getLanguage()); } soundManager.setSoundTheme(preferences.getSound()); @@ -414,7 +414,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha if (offset != user.getPreferences().getTimezoneOffset()) { Map updateData = new HashMap<>(); updateData.put("preferences.timezoneOffset", String.valueOf(offset)); - apiHelper.apiService.updateUser(updateData).compose(apiHelper.configureApiCallObserver()) + apiClient.updateUser(updateData) .subscribe(new MergeUserCallback(this, user), throwable -> { }); } @@ -911,15 +911,15 @@ public class MainActivity extends BaseActivity implements Action1, Ha @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == SELECT_CLASS_RESULT) { - if (this.apiHelper != null) { - this.apiHelper.retrieveUser(true) - .compose(apiHelper.configureApiCallObserver()) + if (this.apiClient != null) { + this.apiClient.retrieveUser(true) + .subscribe(new HabitRPGUserCallback(this), throwable -> { }); } } else if (requestCode == GEM_PURCHASE_REQUEST) { - this.apiHelper.retrieveUser(true) - .compose(apiHelper.configureApiCallObserver()) + this.apiClient.retrieveUser(true) + .subscribe(new HabitRPGUserCallback(this), throwable -> { }); } @@ -941,16 +941,15 @@ public class MainActivity extends BaseActivity implements Action1, Ha @Subscribe public void onEvent(UpdateUserCommand event) { - apiHelper.apiService.updateUser(event.updateData).compose(apiHelper.configureApiCallObserver()) + apiClient.updateUser(event.updateData) .subscribe(new MergeUserCallback(this, user), throwable -> { }); } @Subscribe public void onEvent(EquipCommand event) { - this.apiHelper.apiService.equipItem(event.type, event.key) - .compose(apiHelper.configureApiCallObserver()) - .subscribe(new ItemsCallback(this, this.user), throwable -> { + this.apiClient.equipItem(event.type, event.key) + .subscribe(new ItemsCallback(this, this.user), throwable -> { }); } @@ -958,8 +957,8 @@ public class MainActivity extends BaseActivity implements Action1, Ha public void onEvent(UnlockPathCommand event) { this.user.setBalance(this.user.getBalance() - event.balanceDiff); this.setUserData(false); - apiHelper.apiService.unlockPath(event.path) - .compose(apiHelper.configureApiCallObserver()) + apiClient.unlockPath(event.path) + .subscribe(new UnlockCallback(this, this.user), throwable -> { }); } @@ -972,26 +971,26 @@ public class MainActivity extends BaseActivity implements Action1, Ha @Subscribe public void onEvent(final BuyGemItemCommand event) { if (event.item.canBuy(user) || !event.item.getCurrency().equals("gems")) { - Observable> observable; + Observable observable; if (event.shopIdentifier.equals(Shop.TIME_TRAVELERS_SHOP)) { if (event.item.purchaseType.equals("gear")) { - observable = apiHelper.apiService.purchaseMysterySet(event.item.categoryIdentifier); + observable = apiClient.purchaseMysterySet(event.item.categoryIdentifier); } else { - observable = apiHelper.apiService.purchaseHourglassItem(event.item.purchaseType, event.item.key); + observable = apiClient.purchaseHourglassItem(event.item.purchaseType, event.item.key); } } else if (event.item.purchaseType.equals("quests") && event.item.getCurrency().equals("gold")) { - observable = apiHelper.apiService.purchaseQuest(event.item.key); + observable = apiClient.purchaseQuest(event.item.key); } else { - observable = apiHelper.apiService.purchaseItem(event.item.purchaseType, event.item.key); + observable = apiClient.purchaseItem(event.item.purchaseType, event.item.key); } observable - .compose(apiHelper.configureApiCallObserver()) + .doOnNext(aVoid -> { showSnackbar(this, floatingMenuWrapper, getString(R.string.successful_purchase, event.item.text), SnackbarDisplayType.NORMAL); }) .subscribe(buyResponse -> { - apiHelper.retrieveUser(false) - .compose(apiHelper.configureApiCallObserver()) + apiClient.retrieveUser(false) + .subscribe(new HabitRPGUserCallback(this), throwable -> { }); }, throwable -> { @@ -1025,8 +1024,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha } if (event.Reward.specialTag != null && event.Reward.specialTag.equals("item")) { - apiHelper.apiService.buyItem(event.Reward.getId()) - .compose(apiHelper.configureApiCallObserver()) + apiClient.buyItem(event.Reward.getId()) .subscribe(buyResponse -> { String snackbarMessage = getString(R.string.successful_purchase, event.Reward.getText()); @@ -1070,8 +1068,8 @@ public class MainActivity extends BaseActivity implements Action1, Ha } else { soundManager.loadAndPlayAudio(SoundManager.SoundReward); // user created Rewards - apiHelper.apiService.postTaskDirection(rewardKey, TaskDirection.down.toString()) - .compose(apiHelper.configureApiCallObserver()) + apiClient.postTaskDirection(rewardKey, TaskDirection.down.toString()) + .subscribe(new TaskScoringCallback(this, rewardKey), throwable -> { }); } @@ -1087,7 +1085,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha @Subscribe public void onEvent(final DeleteTaskCommand cmd) { - apiHelper.apiService.deleteTask(cmd.TaskIdToDelete).compose(apiHelper.configureApiCallObserver()) + apiClient.deleteTask(cmd.TaskIdToDelete) .subscribe(aVoid -> { EventBus.getDefault().post(new TaskRemovedEvent(cmd.TaskIdToDelete)); }, throwable -> { @@ -1111,8 +1109,8 @@ public class MainActivity extends BaseActivity implements Action1, Ha @Subscribe public void onEvent(SellItemCommand event) { - this.apiHelper.apiService.sellItem(event.item.getType(), event.item.getKey()) - .compose(apiHelper.configureApiCallObserver()) + this.apiClient.sellItem(event.item.getType(), event.item.getKey()) + .subscribe(habitRPGUser -> { user.setItems(habitRPGUser.getItems()); user.save(); @@ -1127,8 +1125,8 @@ public class MainActivity extends BaseActivity implements Action1, Ha if (event.usingEgg == null || event.usingHatchingPotion == null) { return; } - this.apiHelper.apiService.hatchPet(event.usingEgg.getKey(), event.usingHatchingPotion.getKey()) - .compose(apiHelper.configureApiCallObserver()) + this.apiClient.hatchPet(event.usingEgg.getKey(), event.usingHatchingPotion.getKey()) + .subscribe(new ItemsCallback(user1 -> { FrameLayout petWrapper = (FrameLayout) getLayoutInflater().inflate(R.layout.pet_imageview, null); SimpleDraweeView petImageView = (SimpleDraweeView) petWrapper.findViewById(R.id.pet_imageview); @@ -1165,8 +1163,8 @@ public class MainActivity extends BaseActivity implements Action1, Ha return; } final Pet pet = event.usingPet; - this.apiHelper.apiService.feedPet(event.usingPet.getKey(), event.usingFood.getKey()) - .compose(apiHelper.configureApiCallObserver()) + this.apiClient.feedPet(event.usingPet.getKey(), event.usingFood.getKey()) + .subscribe(feedResponse -> { MainActivity.this.user.getItems().getPets().put(pet.getKey(), feedResponse.value); MainActivity.this.user.getItems().getFood().put(event.usingFood.getKey(), event.usingFood.getOwned() - 1); @@ -1209,8 +1207,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha public void reloadContent(ReloadContentEvent event) { if (!this.isloadingContent) { this.isloadingContent = true; - this.apiHelper.apiService.getContent(apiHelper.languageCode) - .compose(apiHelper.configureApiCallObserver()) + this.apiClient.getContent() .subscribe(contentResult -> { isloadingContent = false; ContentReloadedEvent event1 = new ContentReloadedEvent(); @@ -1253,8 +1250,8 @@ public class MainActivity extends BaseActivity implements Action1, Ha if (lvl > user.getStats().getLvl()) { displayLevelUpDialog(lvl); - this.apiHelper.retrieveUser(true) - .compose(apiHelper.configureApiCallObserver()) + this.apiClient.retrieveUser(true) + .subscribe(new HabitRPGUserCallback(this), throwable -> { }); user.getStats().setLvl(lvl); @@ -1314,8 +1311,8 @@ public class MainActivity extends BaseActivity implements Action1, Ha .setView(customView) .setPositiveButton(R.string.faint_button, (dialog, which) -> { faintDialog = null; - apiHelper.apiService.revive() - .compose(apiHelper.configureApiCallObserver()) + apiClient.revive() + .subscribe(new MergeUserCallback(MainActivity.this, MainActivity.this.user), throwable -> { }); }) @@ -1430,8 +1427,8 @@ public class MainActivity extends BaseActivity implements Action1, Ha String path = "flags.tutorial." + step.getTutorialGroup() + "." + step.getIdentifier(); Map updateData = new HashMap<>(); updateData.put(path, true); - apiHelper.apiService.updateUser(updateData) - .compose(apiHelper.configureApiCallObserver()) + apiClient.updateUser(updateData) + .subscribe(new MergeUserCallback(this, user), throwable -> { }); this.overlayFrameLayout.removeView(this.activeTutorialView); @@ -1485,8 +1482,8 @@ public class MainActivity extends BaseActivity implements Action1, Ha @Subscribe public void onEvent(TaskCheckedCommand event) { - apiHelper.apiService.postTaskDirection(event.Task.getId(), (event.Task.getCompleted() ? TaskDirection.down : TaskDirection.up).toString()) - .compose(apiHelper.configureApiCallObserver()) + apiClient.postTaskDirection(event.Task.getId(), (event.Task.getCompleted() ? TaskDirection.down : TaskDirection.up).toString()) + .subscribe(new TaskScoringCallback(this, event.Task.getId()), throwable -> { event.Task.completed = !event.Task.completed; event.Task.save(); @@ -1505,8 +1502,8 @@ public class MainActivity extends BaseActivity implements Action1, Ha @Subscribe public void onEvent(ChecklistCheckedCommand event) { - apiHelper.apiService.scoreChecklistItem(event.task.getId(), event.item.getId()) - .compose(apiHelper.configureApiCallObserver()) + apiClient.scoreChecklistItem(event.task.getId(), event.item.getId()) + .subscribe(new TaskUpdateCallback(), throwable -> { }); } @@ -1526,13 +1523,13 @@ public class MainActivity extends BaseActivity implements Action1, Ha public void onEvent(final TaskSaveEvent event) { Task task = event.task; if (event.created) { - this.apiHelper.apiService.createItem(task) - .compose(apiHelper.configureApiCallObserver()) + this.apiClient.createItem(task) + .subscribe(new TaskCreationCallback(), throwable -> { }); } else { - this.apiHelper.apiService.updateTask(task.getId(), task) - .compose(apiHelper.configureApiCallObserver()) + this.apiClient.updateTask(task.getId(), task) + .subscribe(new TaskUpdateCallback(), throwable -> { }); } @@ -1540,7 +1537,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha private void checkMaintenance() { this.maintenanceService.getMaintenanceStatus() - .compose(apiHelper.configureApiCallObserver()) + .compose(apiClient.configureApiCallObserver()) .subscribe(maintenanceResponse -> { if (maintenanceResponse.activeMaintenance) { Intent intent = createMaintenanceIntent(maintenanceResponse, false); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MaintenanceActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MaintenanceActivity.java index cadb997e3..b52d67ff3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MaintenanceActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MaintenanceActivity.java @@ -1,7 +1,7 @@ package com.habitrpg.android.habitica.ui.activities; import com.facebook.drawee.view.SimpleDraweeView; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.ui.helpers.MarkdownParser; @@ -21,8 +21,6 @@ import javax.inject.Inject; import butterknife.BindView; import butterknife.OnClick; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; public class MaintenanceActivity extends BaseActivity { @@ -30,7 +28,7 @@ public class MaintenanceActivity extends BaseActivity { public MaintenanceApiService maintenanceService; @Inject - public APIHelper apiHelper; + public IApiClient apiClient; @BindView(R.id.titleTextView) TextView titleTextView; @@ -77,7 +75,7 @@ public class MaintenanceActivity extends BaseActivity { super.onResume(); if (!isDeprecationNotice) { this.maintenanceService.getMaintenanceStatus() - .compose(apiHelper.configureApiCallObserver()) + .compose(apiClient.configureApiCallObserver()) .subscribe(maintenanceResponse -> { if (!maintenanceResponse.activeMaintenance) { finish(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PartyInviteActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PartyInviteActivity.java index 937b4bc95..3c91c7f9e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PartyInviteActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PartyInviteActivity.java @@ -1,9 +1,8 @@ package com.habitrpg.android.habitica.ui.activities; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HostConfig; import com.habitrpg.android.habitica.R; -import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.prefs.scanner.IntentIntegrator; import com.habitrpg.android.habitica.prefs.scanner.IntentResult; @@ -22,13 +21,11 @@ import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; -import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -48,7 +45,7 @@ public class PartyInviteActivity extends BaseActivity { private String userIdToInvite; @Inject - APIHelper apiHelper; + IApiClient apiClient; @Inject protected HostConfig hostConfig; @@ -210,10 +207,7 @@ public class PartyInviteActivity extends BaseActivity { invites.add(userIdToInvite); inviteData.put("uuids", invites); - this.apiHelper.apiService.inviteToGroup(this.user.getParty().getId(), inviteData) - .compose(apiHelper.configureApiCallObserver()) - .subscribe(aVoid -> { - }, throwable -> { - }); + this.apiClient.inviteToGroup(this.user.getParty().getId(), inviteData) + .subscribe(aVoid -> {}, throwable -> {}); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java index 8957a20e4..5bff51c78 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java @@ -10,8 +10,7 @@ import android.support.v7.preference.PreferenceManager; import android.view.View; import android.widget.Button; -import com.amplitude.api.Amplitude; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HostConfig; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback; @@ -28,15 +27,12 @@ import com.raizlabs.android.dbflow.sql.language.Select; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; -import org.json.JSONException; -import org.json.JSONObject; import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; -import java.util.Objects; import javax.inject.Inject; @@ -45,7 +41,7 @@ import butterknife.BindView; public class SetupActivity extends BaseActivity implements View.OnClickListener, ViewPager.OnPageChangeListener, HabitRPGUserCallback.OnUserReceived { @Inject - public APIHelper apiHelper; + public IApiClient apiClient; @Inject protected HostConfig hostConfig; @BindView(R.id.view_pager) @@ -83,8 +79,7 @@ public class SetupActivity extends BaseActivity implements View.OnClickListener, String currentDeviceLanguage = Locale.getDefault().getLanguage(); for (String language : getResources().getStringArray(R.array.LanguageValues)) { if (language.equals(currentDeviceLanguage)) { - apiHelper.apiService.registrationLanguage(currentDeviceLanguage) - .compose(apiHelper.configureApiCallObserver()) + apiClient.registrationLanguage(currentDeviceLanguage) .subscribe(new MergeUserCallback(this, user), throwable -> { }); } @@ -105,8 +100,7 @@ public class SetupActivity extends BaseActivity implements View.OnClickListener, if (this.user != null) { setupViewpager(); } else { - this.apiHelper.apiService.getUser() - .compose(this.apiHelper.configureApiCallObserver()) + this.apiClient.getUser() .subscribe(new HabitRPGUserCallback(this), throwable -> { }); } @@ -152,8 +146,7 @@ public class SetupActivity extends BaseActivity implements View.OnClickListener, @Subscribe public void onEvent(UpdateUserCommand event) { - this.apiHelper.apiService.updateUser(event.updateData) - .compose(this.apiHelper.configureApiCallObserver()) + this.apiClient.updateUser(event.updateData) .subscribe(new MergeUserCallback(this, user), throwable -> { }); } @@ -169,13 +162,12 @@ public class SetupActivity extends BaseActivity implements View.OnClickListener, if (this.pager.getCurrentItem() == 1) { List newTasks = this.taskSetupFragment.createSampleTasks(); this.completedSetup = true; - this.apiHelper.apiService.createTasks(newTasks) - .compose(this.apiHelper.configureApiCallObserver()) + this.apiClient.createTasks(newTasks) .subscribe(tasks -> { onUserReceived(user); }, throwable -> { }); - //this.apiHelper.apiService.batchOperation(operations, new HabitRPGUserCallback(this)); + //this.apiClient.batchOperation(operations, new HabitRPGUserCallback(this)); } this.pager.setCurrentItem(this.pager.getCurrentItem() + 1); } else if (v == this.previousButton) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillMemberActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillMemberActivity.java index 8c37b3d59..bc8f43619 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillMemberActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillMemberActivity.java @@ -6,7 +6,7 @@ import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.events.commands.SelectMemberCommand; @@ -27,7 +27,7 @@ public class SkillMemberActivity extends BaseActivity { RecyclerView recyclerView; @Inject - public APIHelper apiHelper; + public IApiClient apiClient; @Override protected int getLayoutResId() { @@ -48,21 +48,18 @@ public class SkillMemberActivity extends BaseActivity { } private void loadMemberList() { - recyclerView.setLayoutManager(new LinearLayoutManager(this)); viewAdapter = new PartyMemberRecyclerViewAdapter(); viewAdapter.context = this; recyclerView.setAdapter(viewAdapter); - apiHelper.apiService.getGroup("party") - .compose(this.apiHelper.configureApiCallObserver()) + apiClient.getGroup("party") .subscribe(group -> { if (group == null) { return; } - apiHelper.apiService.getGroupMembers(group.id, true) - .compose(apiHelper.configureApiCallObserver()) + apiClient.getGroupMembers(group.id, true) .subscribe(members -> { viewAdapter.setMemberList(members, true); }, @@ -74,7 +71,7 @@ public class SkillMemberActivity extends BaseActivity { } @Subscribe - public void onEvent(SelectMemberCommand evt){ + public void onEvent(SelectMemberCommand evt) { Intent resultIntent = new Intent(); resultIntent.putExtra("member_id", evt.MemberId); setResult(Activity.RESULT_OK, resultIntent); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/PublicGuildsRecyclerViewAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/PublicGuildsRecyclerViewAdapter.java index 3fd9a2e9e..7b82a90db 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/PublicGuildsRecyclerViewAdapter.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/PublicGuildsRecyclerViewAdapter.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.ui.adapter.social; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.events.DisplayFragmentEvent; import com.habitrpg.android.habitica.ui.fragments.social.GuildFragment; @@ -25,7 +25,7 @@ import butterknife.ButterKnife; public class PublicGuildsRecyclerViewAdapter extends RecyclerView.Adapter implements Filterable{ - public APIHelper apiHelper; + public IApiClient apiClient; private List publicGuildList; private List fullPublicGuildList; private List memberGuildIDs; @@ -58,8 +58,8 @@ public class PublicGuildsRecyclerViewAdapter extends RecyclerView.Adapter { memberGuildIDs.remove(guild.id); int indexOfGroup = publicGuildList.indexOf(guild); @@ -67,8 +67,8 @@ public class PublicGuildsRecyclerViewAdapter extends RecyclerView.Adapter { }); } else { - PublicGuildsRecyclerViewAdapter.this.apiHelper.apiService.joinGroup(guild.id) - .compose(apiHelper.configureApiCallObserver()) + PublicGuildsRecyclerViewAdapter.this.apiClient.joinGroup(guild.id) + .subscribe(group -> { memberGuildIDs.add(group.id); int indexOfGroup = publicGuildList.indexOf(group); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.java index 8e5f9fb1a..67c378c65 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.java @@ -1,12 +1,13 @@ package com.habitrpg.android.habitica.ui.adapter.tasks; -import com.habitrpg.android.habitica.APIHelper; + import com.habitrpg.android.habitica.ContentCache; import com.habitrpg.android.habitica.HabiticaBaseApplication; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.helpers.TagsHelper; import com.habitrpg.android.habitica.ui.viewHolders.tasks.RewardViewHolder; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData; import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; @@ -25,13 +26,13 @@ public class RewardsRecyclerViewAdapter extends BaseTasksRecyclerViewAdapter { // get itemdata list ArrayList itemKeys = new ArrayList<>(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java index ab4abc2f3..194100341 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java @@ -8,9 +8,10 @@ import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.helpers.SoundManager; import com.habitrpg.android.habitica.ui.activities.MainActivity; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; import com.raizlabs.android.dbflow.sql.builder.Condition; import com.raizlabs.android.dbflow.sql.language.Select; @@ -20,7 +21,7 @@ import javax.inject.Inject; public abstract class BaseMainFragment extends BaseFragment { @Inject - public APIHelper apiHelper; + public IApiClient apiClient; @Inject protected SoundManager soundManager; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.java index 96d12848f..a9663d91e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.java @@ -60,14 +60,10 @@ public class AvatarOverviewFragment extends BaseMainFragment implements AdapterV public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if (this.apiHelper != null) { - this.apiHelper.apiService.getContent(apiHelper.languageCode) - .compose(apiHelper.configureApiCallObserver()) - .subscribe(contentResult -> { - }, throwable -> { - }); + if (apiClient != null) { + apiClient.getContent() + .subscribe(contentResult -> {}, throwable -> {}); } - } @Override @@ -142,8 +138,7 @@ public class AvatarOverviewFragment extends BaseMainFragment implements AdapterV if (!this.user.getPreferences().getSize().equals(newSize)) { Map updateData = new HashMap<>(); updateData.put("preferences.size", newSize); - apiHelper.apiService.updateUser(updateData) - .compose(apiHelper.configureApiCallObserver()) + apiClient.updateUser(updateData) .subscribe(new MergeUserCallback(activity, user), throwable -> { }); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemsFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemsFragment.java index 3f160c98f..8ace94be1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemsFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemsFragment.java @@ -106,8 +106,8 @@ public class ItemsFragment extends BaseMainFragment { @Subscribe public void onEvent(InvitePartyToQuestCommand event) { - this.apiHelper.apiService.inviteToQuest("party", event.questKey) - .compose(apiHelper.configureApiCallObserver()) + this.apiClient.inviteToQuest("party", event.questKey) + .subscribe(group -> { OpenMenuItemCommand event1 = new OpenMenuItemCommand(); event1.identifier = MainDrawerBuilder.SIDEBAR_PARTY; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.java index d50a2d765..4773bbf23 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.ui.fragments.inventory.shops; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.ui.adapter.inventory.ShopRecyclerAdapter; @@ -40,7 +40,7 @@ public class ShopFragment extends BaseFragment { public Shop shop; @Inject - APIHelper apiHelper; + IApiClient apiClient; @Nullable @Override @@ -100,8 +100,7 @@ public class ShopFragment extends BaseFragment { shopUrl = "seasonal"; break; } - this.apiHelper.apiService.fetchShopInventory(shopUrl) - .compose(this.apiHelper.configureApiCallObserver()) + this.apiClient.fetchShopInventory(shopUrl) .subscribe(shop -> { this.shop = shop; this.adapter.setShop(shop); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java index 53d212e2d..20b53d9ac 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java @@ -10,7 +10,7 @@ import android.support.v7.app.AlertDialog; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.callbacks.MergeUserCallback; @@ -41,7 +41,7 @@ public class PreferencesFragment extends BasePreferencesFragment implements SharedPreferences.OnSharedPreferenceChangeListener { @Inject - public APIHelper apiHelper; + public IApiClient apiClient; @Inject public SoundManager soundManager; private Context context; @@ -185,8 +185,7 @@ public class PreferencesFragment extends BasePreferencesFragment implements int hour = Integer.parseInt(pieces[0]); Map updateObject = new HashMap<>(); updateObject.put("dayStart", hour); - apiHelper.apiService.changeCustomDayStart(updateObject) - .compose(apiHelper.configureApiCallObserver()) + apiClient.changeCustomDayStart(updateObject) .subscribe(user -> {}, throwable -> {}); } else if (key.equals("language")) { LanguageHelper languageHelper = new LanguageHelper(sharedPreferences.getString(key,"en")); @@ -203,16 +202,15 @@ public class PreferencesFragment extends BasePreferencesFragment implements Map updateData = new HashMap<>(); updateData.put("preferences.language", languageHelper.getLanguageCode()); - apiHelper.apiService.updateUser(updateData) - .compose(apiHelper.configureApiCallObserver()) + apiClient.updateUser(updateData) + .subscribe(new MergeUserCallback(activity, user), throwable -> { }); Preferences preferences = user.getPreferences(); preferences.setLanguage(languageHelper.getLanguageCode()); - apiHelper.languageCode = preferences.getLanguage(); - apiHelper.apiService.getContent(apiHelper.languageCode) - .compose(apiHelper.configureApiCallObserver()) + apiClient.setLanguageCode(preferences.getLanguage()); + apiClient.getContent() .subscribe(contentResult -> { }, throwable -> { }); @@ -234,8 +232,7 @@ public class PreferencesFragment extends BasePreferencesFragment implements Map updateData = new HashMap<>(); updateData.put("preferences.sound", newAudioTheme); MergeUserCallback mergeUserCallback = new MergeUserCallback(activity, user); - apiHelper.apiService.updateUser(updateData) - .compose(apiHelper.configureApiCallObserver()) + apiClient.updateUser(updateData) .subscribe(mergeUserCallback, throwable -> { }); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/setup/AvatarSetupFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/setup/AvatarSetupFragment.java index 2b4ae10ac..7013ff412 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/setup/AvatarSetupFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/setup/AvatarSetupFragment.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.ui.fragments.setup; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.ui.AvatarView; @@ -43,7 +43,7 @@ public class AvatarSetupFragment extends BaseFragment { private HabitRPGUser user; @Inject - APIHelper apiHelper; + IApiClient apiClient; @Nullable @Override @@ -108,7 +108,7 @@ public class AvatarSetupFragment extends BaseFragment { List customizations = select.queryList(); if (customizations.size() == 0) { - this.apiHelper.getContent().compose(this.apiHelper.configureApiCallObserver()) + this.apiClient.getContent() .subscribe(contentResult -> { this.loadCustomizations(); }, throwable -> {}); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.java index 7197202fd..abe66276c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.java @@ -175,8 +175,8 @@ public class SkillsFragment extends BaseMainFragment { message.append(" + ").append(round(event.gold, 2)).append(" GP"); } UiUtils.showSnackbar(activity, activity.getFloatingMenuWrapper(), message.toString(), UiUtils.SnackbarDisplayType.NORMAL); - apiHelper.apiService.getUser() - .compose(apiHelper.configureApiCallObserver()) + apiClient.getUser() + .subscribe(new MergeUserCallback(activity, user), throwable -> { }); } @@ -206,13 +206,13 @@ public class SkillsFragment extends BaseMainFragment { private void useSkill(Skill skill, String taskId) { displayProgressDialog(); - Observable> observable; + Observable observable; if (taskId != null) { - observable = apiHelper.apiService.useSkill(skill.key, skill.target, taskId); + observable = apiClient.useSkill(skill.key, skill.target, taskId); } else { - observable = apiHelper.apiService.useSkill(skill.key, skill.target); + observable = apiClient.useSkill(skill.key, skill.target); } - observable.compose(apiHelper.configureApiCallObserver()) + observable .subscribe(new SkillCallback(activity, user, skill), throwable -> { removeProgressDialog(); }); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatListFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatListFragment.java index 4c2513804..0c2530b8c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatListFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatListFragment.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.ui.fragments.social; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; @@ -37,7 +37,6 @@ import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.Toast; import java.util.ArrayList; import java.util.HashMap; @@ -53,7 +52,7 @@ public class ChatListFragment extends BaseFragment implements SwipeRefreshLayout public String seenGroupId; @Inject - public APIHelper apiHelper; + public IApiClient apiClient; public boolean isTavern; @BindView(R.id.chat_list) RecyclerView mRecyclerView; @@ -138,7 +137,7 @@ public class ChatListFragment extends BaseFragment implements SwipeRefreshLayout public void onRefresh() { swipeRefreshLayout.setRefreshing(true); - apiHelper.apiService.listGroupChat(groupId).compose(apiHelper.configureApiCallObserver()) + apiClient.listGroupChat(groupId) .subscribe(this, throwable -> { }); } @@ -156,8 +155,7 @@ public class ChatListFragment extends BaseFragment implements SwipeRefreshLayout gotNewMessages = false; - apiHelper.apiService.seenMessages(seenGroupId) - .compose(apiHelper.configureApiCallObserver()) + apiClient.seenMessages(seenGroupId) .subscribe(s -> { }, throwable -> { }); @@ -179,8 +177,8 @@ public class ChatListFragment extends BaseFragment implements SwipeRefreshLayout AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setMessage(R.string.chat_flag_confirmation) .setPositiveButton(R.string.flag_confirm, (dialog, id) -> { - apiHelper.apiService.flagMessage(cmd.groupId, cmd.chatMessage.id) - .compose(apiHelper.configureApiCallObserver()) + apiClient.flagMessage(cmd.groupId, cmd.chatMessage.id) + .subscribe(aVoid -> { MainActivity activity = (MainActivity) getActivity(); UiUtils.showSnackbar(activity, activity.getFloatingMenuWrapper(), "Flagged message by " + cmd.chatMessage.user, UiUtils.SnackbarDisplayType.NORMAL); @@ -194,7 +192,7 @@ public class ChatListFragment extends BaseFragment implements SwipeRefreshLayout @Subscribe public void onEvent(final ToggleLikeMessageCommand cmd) { - apiHelper.apiService.likeMessage(cmd.groupId, cmd.chatMessage.id).compose(apiHelper.configureApiCallObserver()) + apiClient.likeMessage(cmd.groupId, cmd.chatMessage.id) .subscribe(voids -> { }, throwable -> { }); @@ -202,8 +200,8 @@ public class ChatListFragment extends BaseFragment implements SwipeRefreshLayout @Subscribe public void onEvent(final DeleteChatMessageCommand cmd) { - apiHelper.apiService.deleteMessage(cmd.groupId, cmd.chatMessage.id) - .compose(apiHelper.configureApiCallObserver()) + apiClient.deleteMessage(cmd.groupId, cmd.chatMessage.id) + .subscribe(aVoid -> { if (currentChatMessages != null) { currentChatMessages.remove(cmd.chatMessage); @@ -218,8 +216,8 @@ public class ChatListFragment extends BaseFragment implements SwipeRefreshLayout public void onEvent(SendNewGroupMessageCommand cmd) { HashMap messageObject = new HashMap<>(); messageObject.put("message", cmd.Message); - apiHelper.apiService.postGroupChat(cmd.TargetGroupId, messageObject) - .compose(apiHelper.configureApiCallObserver()) + apiClient.postGroupChat(cmd.TargetGroupId, messageObject) + .subscribe(postChatMessageResult -> { if (currentChatMessages != null) { currentChatMessages.add(0, postChatMessageResult.message); @@ -235,7 +233,7 @@ public class ChatListFragment extends BaseFragment implements SwipeRefreshLayout // If the ChatList is Tavern, we're able to toggle the sleep-mode @Subscribe public void onEvent(ToggleInnCommand event) { - apiHelper.apiService.sleep().compose(apiHelper.configureApiCallObserver()) + apiClient.sleep() .subscribe(aVoid -> { ToggledInnStateEvent innState = new ToggledInnStateEvent(); innState.Inn = !user.getPreferences().getSleep(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.java index 854fa3b07..53dc33496 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.ui.fragments.social; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.databinding.FragmentGroupInfoBinding; @@ -39,7 +39,7 @@ public class GroupInformationFragment extends BaseFragment { FragmentGroupInfoBinding viewBinding; @Inject - APIHelper apiHelper; + IApiClient apiClient; @BindView(R.id.questMemberView) LinearLayout questMemberView; @@ -215,8 +215,8 @@ public class GroupInformationFragment extends BaseFragment { @OnClick(R.id.btnQuestAccept) public void onQuestAccept() { - apiHelper.apiService.acceptQuest(group.id) - .compose(apiHelper.configureApiCallObserver()) + apiClient.acceptQuest(group.id) + .subscribe(aVoid -> { user.getParty().getQuest().RSVPNeeded = false; group.quest.members.put(user.getId(), true); @@ -229,8 +229,8 @@ public class GroupInformationFragment extends BaseFragment { @OnClick(R.id.btnQuestReject) public void onQuestReject() { - apiHelper.apiService.rejectQuest(group.id) - .compose(apiHelper.configureApiCallObserver()) + apiClient.rejectQuest(group.id) + .subscribe(aVoid -> { user.getParty().getQuest().RSVPNeeded = false; group.quest.members.put(user.getId(), false); @@ -246,8 +246,8 @@ public class GroupInformationFragment extends BaseFragment { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()) .setMessage("Are you sure you want to leave the active quest? All your quest progress will be lost.") .setPositiveButton("Yes", (dialog, which) -> { - apiHelper.apiService.leaveQuest(group.id) - .compose(apiHelper.configureApiCallObserver()) + apiClient.leaveQuest(group.id) + .subscribe(aVoid -> { group.quest.members.remove(user.getId()); setGroup(group); @@ -265,8 +265,8 @@ public class GroupInformationFragment extends BaseFragment { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()) .setMessage(R.string.quest_begin_message) .setPositiveButton(R.string.yes, (dialog, which) -> { - apiHelper.apiService.forceStartQuest(group.id, group) - .compose(apiHelper.configureApiCallObserver()) + apiClient.forceStartQuest(group.id, group) + .subscribe(quest -> { group.quest = quest; setGroup(group); @@ -283,8 +283,8 @@ public class GroupInformationFragment extends BaseFragment { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()) .setMessage(R.string.quest_cancel_message) .setPositiveButton(R.string.yes, (dialog, which) -> { - apiHelper.apiService.cancelQuest(group.id) - .compose(apiHelper.configureApiCallObserver()) + apiClient.cancelQuest(group.id) + .subscribe(aVoid -> { setGroup(group); setQuestContent(null); @@ -301,8 +301,8 @@ public class GroupInformationFragment extends BaseFragment { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()) .setMessage("Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.") .setPositiveButton("Yes", (dialog, which) -> { - apiHelper.apiService.abortQuest(group.id) - .compose(apiHelper.configureApiCallObserver()) + apiClient.abortQuest(group.id) + .subscribe(quest -> { group.quest = quest; setGroup(group); @@ -317,8 +317,8 @@ public class GroupInformationFragment extends BaseFragment { @OnClick(R.id.btnPartyInviteAccept) public void onPartyInviteAccepted() { - apiHelper.apiService.joinGroup(user.getInvitations().getParty().getId()) - .compose(apiHelper.configureApiCallObserver()) + apiClient.joinGroup(user.getInvitations().getParty().getId()) + .subscribe(group -> { setGroup(group); viewBinding.setInvitation(null); @@ -327,8 +327,8 @@ public class GroupInformationFragment extends BaseFragment { @OnClick(R.id.btnPartyInviteReject) public void onPartyInviteRejected() { - apiHelper.apiService.rejectGroupInvite(user.getInvitations().getParty().getId()) - .compose(apiHelper.configureApiCallObserver()) + apiClient.rejectGroupInvite(user.getInvitations().getParty().getId()) + .subscribe(aVoid -> { viewBinding.setInvitation(null); }, throwable -> {}); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java index 0ef23b929..f617d2eeb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java @@ -34,12 +34,10 @@ public class GuildFragment extends BaseMainFragment implements Action1 { if (this.guildInformationFragment != null) { this.guildInformationFragment.setGroup(guild); } - if (this.guild.chat == null) { - if (this.apiHelper != null) { - apiHelper.apiService.getGroup(this.guild.id).compose(apiHelper.configureApiCallObserver()) - .subscribe(this, throwable -> { - }); - } + if (this.guild.chat == null && this.apiClient != null) { + apiClient.getGroup(this.guild.id) + .subscribe(this, throwable -> { + }); } } @@ -67,8 +65,8 @@ public class GuildFragment extends BaseMainFragment implements Action1 { @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - if (this.apiHelper != null && this.guild != null) { - apiHelper.apiService.getGroup(this.guild.id).compose(apiHelper.configureApiCallObserver()) + if (this.apiClient != null && this.guild != null) { + apiClient.getGroup(this.guild.id) .subscribe(this, throwable -> { }); } @@ -94,13 +92,13 @@ public class GuildFragment extends BaseMainFragment implements Action1 { switch (id) { case R.id.menu_guild_join: - this.apiHelper.apiService.joinGroup(this.guild.id).compose(apiHelper.configureApiCallObserver()) + this.apiClient.joinGroup(this.guild.id) .subscribe(this, throwable -> { }); this.isMember = true; return true; case R.id.menu_guild_leave: - this.apiHelper.apiService.leaveGroup(this.guild.id).compose(apiHelper.configureApiCallObserver()) + this.apiClient.leaveGroup(this.guild.id) .subscribe(aVoid -> { this.activity.supportInvalidateOptionsMenu(); }, throwable -> { @@ -224,8 +222,8 @@ public class GuildFragment extends BaseMainFragment implements Action1 { needsSaving = true; } if (needsSaving) { - this.apiHelper.apiService.updateGroup(this.guild.id, this.guild) - .compose(apiHelper.configureApiCallObserver()) + this.apiClient.updateGroup(this.guild.id, this.guild) + .subscribe(aVoid -> { }, throwable -> { }); @@ -253,8 +251,8 @@ public class GuildFragment extends BaseMainFragment implements Action1 { this.activity.supportInvalidateOptionsMenu(); } - @Override - public String customTitle() { - return getString(R.string.guild); - } + @Override + public String customTitle() { + return getString(R.string.guild); + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildsOverviewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildsOverviewFragment.java index 78b422f70..714bc570c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildsOverviewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildsOverviewFragment.java @@ -68,9 +68,9 @@ public class GuildsOverviewFragment extends BaseMainFragment implements View.OnC } private void fetchGuilds() { - if (this.apiHelper != null && this.apiHelper.apiService != null) { - this.apiHelper.apiService.listGroups("guilds") - .compose(apiHelper.configureApiCallObserver()) + if (this.apiClient != null && this.apiClient != null) { + this.apiClient.listGroups("guilds") + .subscribe(groups -> { GuildsOverviewFragment.this.guilds = groups; GuildsOverviewFragment.this.setGuildsOnListView(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxFragment.java index 8a5dd87e9..b21693998 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxFragment.java @@ -58,8 +58,8 @@ public class InboxFragment extends BaseMainFragment Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); - this.apiHelper.apiService.markPrivateMessagesRead() - .compose(apiHelper.configureApiCallObserver()) + this.apiClient.markPrivateMessagesRead() + .subscribe(aVoid -> {}, throwable -> {}); View v = inflater.inflate(R.layout.fragment_inbox, container, false); @@ -125,8 +125,7 @@ public class InboxFragment extends BaseMainFragment @Override public void onRefresh() { swipeRefreshLayout.setRefreshing(true); - this.apiHelper.retrieveUser(true) - .compose(apiHelper.configureApiCallObserver()) + this.apiClient.retrieveUser(true) .subscribe(new HabitRPGUserCallback(this), throwable -> {}); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.java index 08ea3be97..087f1393e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.java @@ -80,8 +80,8 @@ public class InboxMessageListFragment extends BaseMainFragment private void refreshUserInbox () { this.swipeRefreshLayout.setRefreshing(true); - this.apiHelper.retrieveUser(true) - .compose(apiHelper.configureApiCallObserver()) + this.apiClient.retrieveUser(true) + .subscribe(new HabitRPGUserCallback(this), throwable -> {}); } @@ -125,8 +125,8 @@ public class InboxMessageListFragment extends BaseMainFragment messageObject.put("message", cmd.Message); messageObject.put("toUserId", cmd.UserToSendTo); - apiHelper.apiService.postPrivateMessage(messageObject) - .compose(apiHelper.configureApiCallObserver()) + apiClient.postPrivateMessage(messageObject) + .subscribe(postChatMessageResult -> { this.refreshUserInbox(); }, throwable -> { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/PublicGuildsFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/PublicGuildsFragment.java index 4ee2b32e6..fa9866945 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/PublicGuildsFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/PublicGuildsFragment.java @@ -50,7 +50,7 @@ public class PublicGuildsFragment extends BaseMainFragment implements SearchView recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST)); viewAdapter = new PublicGuildsRecyclerViewAdapter(); viewAdapter.setMemberGuildIDs(this.memberGuildIDs); - viewAdapter.apiHelper = this.apiHelper; + viewAdapter.apiClient = this.apiClient; recyclerView.setAdapter(viewAdapter); if (this.guilds != null) { this.viewAdapter.setPublicGuildList(this.guilds); @@ -71,9 +71,9 @@ public class PublicGuildsFragment extends BaseMainFragment implements SearchView } private void fetchGuilds() { - if (this.apiHelper != null) { - this.apiHelper.apiService.listGroups("publicGuilds") - .compose(apiHelper.configureApiCallObserver()) + if (this.apiClient != null) { + this.apiClient.listGroups("publicGuilds") + .subscribe(groups -> { PublicGuildsFragment.this.guilds = groups; if (PublicGuildsFragment.this.viewAdapter != null) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java index ed90857d4..233dac9b6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java @@ -55,9 +55,8 @@ public class TavernFragment extends BaseMainFragment { @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - if (this.apiHelper != null) { - apiHelper.apiService.getGroup("habitrpg") - .compose(apiHelper.configureApiCallObserver()) + if (this.apiClient != null) { + apiClient.getGroup("habitrpg") .subscribe(group -> { TavernFragment.this.tavern = group; if (group.quest != null && group.quest.key != null && TavernFragment.this.isAdded()) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallegeDetailDialogHolder.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallegeDetailDialogHolder.java index 3e7428adf..d60978de8 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallegeDetailDialogHolder.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallegeDetailDialogHolder.java @@ -11,7 +11,7 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.events.commands.OpenFullProfileCommand; @@ -19,6 +19,7 @@ import com.habitrpg.android.habitica.ui.activities.ChallengeDetailActivity; import com.habitrpg.android.habitica.ui.adapter.social.ChallengesListViewAdapter; import com.habitrpg.android.habitica.ui.helpers.MarkdownParser; import com.habitrpg.android.habitica.ui.helpers.ViewHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.magicmicky.habitrpgwrapper.lib.models.Challenge; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; @@ -69,7 +70,7 @@ public class ChallegeDetailDialogHolder { LinearLayout task_group_layout; private AlertDialog dialog; - private APIHelper apiHelper; + private IApiClient apiClient; private HabitRPGUser user; private Challenge challenge; private Action1 challengeJoinedAction; @@ -82,10 +83,10 @@ public class ChallegeDetailDialogHolder { ButterKnife.bind(this, view); } - public void bind(AlertDialog dialog, APIHelper apiHelper, HabitRPGUser user, Challenge challenge, + public void bind(AlertDialog dialog, IApiClient apiClient, HabitRPGUser user, Challenge challenge, Action1 challengeJoinedAction, Action1 challengeLeftAction) { this.dialog = dialog; - this.apiHelper = apiHelper; + this.apiClient = apiClient; this.user = user; this.challenge = challenge; this.challengeJoinedAction = challengeJoinedAction; @@ -104,8 +105,7 @@ public class ChallegeDetailDialogHolder { gem_amount.setText(challenge.prize + ""); member_count.setText(challenge.memberCount + ""); - apiHelper.apiService.getChallengeTasks(challenge.id) - .compose(this.apiHelper.configureApiCallObserver()) + apiClient.getChallengeTasks(challenge.id) .subscribe(taskList -> { ArrayList todos = new ArrayList<>(); ArrayList habits = new ArrayList<>(); @@ -290,8 +290,7 @@ public class ChallegeDetailDialogHolder { @OnClick(R.id.challenge_join_btn) public void joinChallenge() { - this.apiHelper.apiService.joinChallenge(challenge.id) - .compose(apiHelper.configureApiCallObserver()) + this.apiClient.joinChallenge(challenge.id) .subscribe(challenge -> { challenge.user_id = this.user.getId(); challenge.async().save(); @@ -310,8 +309,7 @@ public class ChallegeDetailDialogHolder { new AlertDialog.Builder(context) .setTitle(context.getString(R.string.challenge_leave_title)) .setMessage(String.format(context.getString(R.string.challenge_leave_text), challenge.name)) - .setPositiveButton(context.getString(R.string.yes), (dialog, which) -> this.apiHelper.apiService.leaveChallenge(challenge.id) - .compose(apiHelper.configureApiCallObserver()) + .setPositiveButton(context.getString(R.string.yes), (dialog, which) -> this.apiClient.leaveChallenge(challenge.id) .subscribe(aVoid -> { challenge.user_id = null; challenge.async().save(); @@ -330,7 +328,7 @@ public class ChallegeDetailDialogHolder { } - public static void showDialog(Activity activity, APIHelper apiHelper, HabitRPGUser user, Challenge challenge, + public static void showDialog(Activity activity, IApiClient apiClient, HabitRPGUser user, Challenge challenge, Action1 challengeJoinedAction, Action1 challengeLeftAction) { View dialogLayout = activity.getLayoutInflater().inflate(R.layout.dialog_challenge_detail, null); @@ -339,6 +337,6 @@ public class ChallegeDetailDialogHolder { AlertDialog.Builder builder = new AlertDialog.Builder(activity) .setView(dialogLayout); - challegeDetailDialogHolder.bind(builder.show(), apiHelper, user, challenge, challengeJoinedAction, challengeLeftAction); + challegeDetailDialogHolder.bind(builder.show(), apiClient, user, challenge, challengeJoinedAction, challengeLeftAction); } } \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java index 036f128b4..ff32f17d7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java @@ -1,7 +1,7 @@ package com.habitrpg.android.habitica.ui.fragments.social.challenges; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.helpers.TagsHelper; @@ -37,7 +37,7 @@ public class ChallengeTasksRecyclerViewFragment extends BaseFragment { @Named("UserID") String userID; @Inject - APIHelper apiHelper; + IApiClient apiClient; ObservableList tasksOnInitialize; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.java index bd33e9440..6df3b0f54 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.java @@ -25,8 +25,6 @@ import org.greenrobot.eventbus.Subscribe; import java.util.ArrayList; import java.util.Stack; -import rx.Observable; -import rx.subjects.AsyncSubject; import rx.subjects.PublishSubject; public class ChallengesOverviewFragment extends BaseMainFragment { @@ -71,8 +69,8 @@ public class ChallengesOverviewFragment extends BaseMainFragment { } private void subscribeGetChallenges(){ - this.apiHelper.apiService.getUserChallenges() - .compose(apiHelper.configureApiCallObserver()) + this.apiClient.getUserChallenges() + .subscribe(challenges -> { getUserChallengesObservable.onNext(challenges); }, e -> { @@ -153,7 +151,7 @@ public class ChallengesOverviewFragment extends BaseMainFragment { public void onEvent(ShowChallengeDetailDialogCommand cmd) { Challenge challenge = new Select().from(Challenge.class).where(Condition.column("id").is(cmd.challengeId)).querySingle(); - ChallegeDetailDialogHolder.showDialog(HabiticaApplication.currentActivity, apiHelper, user, challenge, challenge1 -> { + ChallegeDetailDialogHolder.showDialog(HabiticaApplication.currentActivity, apiClient, user, challenge, challenge1 -> { // challenge joined userChallengesFragment.addItem(challenge1); availableChallengesFragment.updateItem(challenge1); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java index eff786fc7..0cc9f4db7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java @@ -64,8 +64,7 @@ public class PartyFragment extends BaseMainFragment { // Get the full group data if (this.user != null && this.user.getParty() != null && this.user.getParty().id != null) { - apiHelper.apiService.getGroup("party") - .compose(this.apiHelper.configureApiCallObserver()) + apiClient.getGroup("party") .subscribe(group -> { if (group == null) { return; @@ -74,8 +73,8 @@ public class PartyFragment extends BaseMainFragment { updateGroupUI(); - apiHelper.apiService.getGroupMembers(group.id, true) - .compose(apiHelper.configureApiCallObserver()) + apiClient.getGroupMembers(group.id, true) + .subscribe(members -> { PartyFragment.this.group.members = members; updateGroupUI(); @@ -166,7 +165,7 @@ public class PartyFragment extends BaseMainFragment { this.displayEditForm(); return true; case R.id.menu_guild_leave: - this.apiHelper.apiService.leaveGroup(this.group.id).compose(apiHelper.configureApiCallObserver()) + this.apiClient.leaveGroup(this.group.id) .subscribe(group -> { getActivity().getSupportFragmentManager().beginTransaction().remove(PartyFragment.this).commit(); }, throwable -> { @@ -215,8 +214,8 @@ public class PartyFragment extends BaseMainFragment { needsSaving = true; } if (needsSaving) { - this.apiHelper.apiService.updateGroup(this.group.id, this.group) - .compose(apiHelper.configureApiCallObserver()) + this.apiClient.updateGroup(this.group.id, this.group) + .subscribe(aVoid -> { }, throwable -> { }); @@ -245,8 +244,8 @@ public class PartyFragment extends BaseMainFragment { Collections.addAll(invites, userIDs); inviteData.put("uuids", invites); } - this.apiHelper.apiService.inviteToGroup(this.group.id, inviteData) - .compose(apiHelper.configureApiCallObserver()) + this.apiClient.inviteToGroup(this.group.id, inviteData) + .subscribe(aVoid -> { }, throwable -> { }); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java index 3d25b510c..ce6f99399 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java @@ -10,7 +10,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.events.commands.AddNewTaskCommand; @@ -24,7 +24,6 @@ import com.habitrpg.android.habitica.ui.adapter.tasks.TodosRecyclerViewAdapter; import com.habitrpg.android.habitica.ui.fragments.BaseFragment; import com.habitrpg.android.habitica.ui.helpers.ItemTouchHelperAdapter; import com.habitrpg.android.habitica.ui.helpers.ItemTouchHelperDropCallback; -import com.habitrpg.android.habitica.ui.menu.DividerItemDecoration; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; @@ -47,7 +46,7 @@ public class TaskRecyclerViewFragment extends BaseFragment implements View.OnCli @Named("UserID") String userID; @Inject - APIHelper apiHelper; + IApiClient apiClient; @Inject TagsHelper tagsHelper; LinearLayoutManager layoutManager = null; @@ -93,7 +92,7 @@ public class TaskRecyclerViewFragment extends BaseFragment implements View.OnCli return; case Task.TYPE_REWARD: layoutOfType = R.layout.reward_item_card; - this.recyclerAdapter = new RewardsRecyclerViewAdapter(Task.TYPE_REWARD, tagsHelper, layoutOfType, getContext(), user, apiHelper); + this.recyclerAdapter = new RewardsRecyclerViewAdapter(Task.TYPE_REWARD, tagsHelper, layoutOfType, getContext(), user, apiClient); break; } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java index 2c2684122..aa6dd9ec0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java @@ -198,9 +198,9 @@ public class TasksFragment extends BaseMainFragment implements OnCheckedChangeLi refreshItem.setActionView(iv); - if (apiHelper != null) { - apiHelper.retrieveUser(true) - .compose(apiHelper.configureApiCallObserver()) + if (apiClient != null) { + apiClient.retrieveUser(true) + .subscribe( new HabitRPGUserCallback(activity), throwable -> stopAnimatingRefreshItem() @@ -218,9 +218,9 @@ public class TasksFragment extends BaseMainFragment implements OnCheckedChangeLi TaskRecyclerViewFragment fragment; SortableTasksRecyclerViewAdapter.SortTasksCallback sortCallback = (task, from, to) -> { - if (apiHelper != null){ - apiHelper.apiService.postTaskNewPosition(task.getId(), String.valueOf(to)) - .compose(apiHelper.configureApiCallObserver()) + if (apiClient != null){ + apiClient.postTaskNewPosition(task.getId(), String.valueOf(to)) + .subscribe(aVoid -> {}, e -> {}); } }; @@ -319,9 +319,9 @@ public class TasksFragment extends BaseMainFragment implements OnCheckedChangeLi UiUtils.dismissKeyboard(activity); final Tag t = new Tag(); t.setName(event.tagName); - if (apiHelper != null) { - apiHelper.apiService.createTag(t) - .compose(apiHelper.configureApiCallObserver()) + if (apiClient != null) { + apiClient.createTag(t) + .subscribe(tag -> { // Since we get a list of all tags, we just save them all tag.user_id = user.getId(); @@ -338,9 +338,9 @@ public class TasksFragment extends BaseMainFragment implements OnCheckedChangeLi @Subscribe public void onEvent(final DeleteTagCommand event) { final Tag t = event.tag; - if (apiHelper != null) { - apiHelper.apiService.deleteTag(t.getId()) - .compose(apiHelper.configureApiCallObserver()) + if (apiClient != null) { + apiClient.deleteTag(t.getId()) + .subscribe(tag -> { tagFilterMap.remove(t.getId()); filterChangedHandler.hit(); @@ -361,9 +361,9 @@ public class TasksFragment extends BaseMainFragment implements OnCheckedChangeLi public void onEvent(final UpdateTagCommand event) { final Tag t = event.tag; final String uuid = event.uuid; - if (apiHelper != null) { - apiHelper.apiService.updateTag(uuid,t) - .compose(apiHelper.configureApiCallObserver()) + if (apiClient != null) { + apiClient.updateTag(uuid,t) + .subscribe(tag -> { UiUtils.dismissKeyboard(this.activity); updateTagFilterDrawerItem(tag); @@ -376,9 +376,9 @@ public class TasksFragment extends BaseMainFragment implements OnCheckedChangeLi @Subscribe public void onEvent(RefreshUserCommand event) { - if (apiHelper != null) { - apiHelper.retrieveUser(true) - .compose(apiHelper.configureApiCallObserver()) + if (apiClient != null) { + apiClient.retrieveUser(true) + .subscribe( new HabitRPGUserCallback(activity), throwable -> stopAnimatingRefreshItem() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java index 9aca07b77..d7cd5c529 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.widget; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.HabiticaBaseApplication; import com.habitrpg.android.habitica.HostConfig; @@ -36,12 +36,12 @@ public class AvatarStatsWidgetProvider extends BaseWidgetProvider { } @Inject - APIHelper apiHelper; + IApiClient apiClient; @Inject HostConfig hostConfig; private void setUp(Context context) { - if (apiHelper == null) { + if (apiClient == null) { HabiticaBaseApplication application = HabiticaApplication.getInstance(context); application.getComponent().inject(this); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/DailiesWidgetProvider.java b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/DailiesWidgetProvider.java index a97f2a3cf..af6bbf4dd 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/DailiesWidgetProvider.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/DailiesWidgetProvider.java @@ -2,7 +2,7 @@ package com.habitrpg.android.habitica.widget; import android.content.Context; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.HabiticaBaseApplication; import com.habitrpg.android.habitica.HostConfig; @@ -16,12 +16,12 @@ public class DailiesWidgetProvider extends TaskListWidgetProvider{ public static final String TASK_ID_ITEM = "com.habitrpg.android.habitica.TASK_ID_ITEM"; @Inject - APIHelper apiHelper; + IApiClient apiClient; @Inject HostConfig hostConfig; private void setUp(Context context) { - if (apiHelper == null) { + if (apiClient == null) { HabiticaBaseApplication application = HabiticaApplication.getInstance(context); application.getComponent().inject(this); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/HabitButtonWidgetProvider.java b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/HabitButtonWidgetProvider.java index 30f745b2f..6cd1d35e5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/HabitButtonWidgetProvider.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/HabitButtonWidgetProvider.java @@ -7,38 +7,30 @@ import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.widget.RemoteViews; -import android.widget.Toast; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.HabiticaBaseApplication; import com.habitrpg.android.habitica.HostConfig; import com.habitrpg.android.habitica.R; -import com.habitrpg.android.habitica.ui.helpers.UiUtils; -import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; -import com.magicmicky.habitrpgwrapper.lib.models.Stats; -import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; 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 javax.inject.Inject; -import static com.habitrpg.android.habitica.ui.activities.MainActivity.MIN_LEVEL_FOR_SKILLS; -import static com.habitrpg.android.habitica.ui.activities.MainActivity.round; - public class HabitButtonWidgetProvider extends BaseWidgetProvider { public static final String HABIT_ACTION = "com.habitrpg.android.habitica.HABIT_ACTION"; public static final String TASK_ID = "com.habitrpg.android.habitica.TASK_ID_ITEM"; public static final String TASK_DIRECTION = "com.habitrpg.android.habitica.TASK_DIRECTION"; @Inject - public APIHelper apiHelper; + public IApiClient apiClient; @Inject public HostConfig hostConfig; private void setUp(Context context) { - if (apiHelper == null) { + if (apiClient == null) { HabiticaBaseApplication application = HabiticaApplication.getInstance(context); application.getComponent().inject(this); } @@ -85,8 +77,8 @@ public class HabitButtonWidgetProvider extends BaseWidgetProvider { int[] ids = {appWidgetId}; if (taskId != null) { - apiHelper.apiService.postTaskDirection(taskId, direction) - .compose(apiHelper.configureApiCallObserver()) + apiClient.postTaskDirection(taskId, direction) + .subscribe(taskDirectionData -> { Task task = new Select().from(Task.class).where(Condition.column("id").eq(taskId)).querySingle(); task.value = task.value + taskDirectionData.getDelta(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TaskListWidgetProvider.java b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TaskListWidgetProvider.java index 1a2b77177..800ab0e2a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TaskListWidgetProvider.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TaskListWidgetProvider.java @@ -10,7 +10,7 @@ import android.os.Build; import android.os.Bundle; import android.widget.RemoteViews; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.HabiticaBaseApplication; import com.habitrpg.android.habitica.HostConfig; @@ -28,12 +28,12 @@ public abstract class TaskListWidgetProvider extends BaseWidgetProvider { public static final String TASK_ID_ITEM = "com.habitrpg.android.habitica.TASK_ID_ITEM"; @Inject - APIHelper apiHelper; + IApiClient apiClient; @Inject HostConfig hostConfig; private void setUp(Context context) { - if (apiHelper == null) { + if (apiClient == null) { HabiticaBaseApplication application = HabiticaApplication.getInstance(context); application.getComponent().inject(this); } @@ -54,8 +54,8 @@ public abstract class TaskListWidgetProvider extends BaseWidgetProvider { String taskId = intent.getStringExtra(TASK_ID_ITEM); if (taskId != null) { - apiHelper.apiService.postTaskDirection(taskId, TaskDirection.up.toString()) - .compose(apiHelper.configureApiCallObserver()) + apiClient.postTaskDirection(taskId, TaskDirection.up.toString()) + .subscribe(taskDirectionData -> { Task task = new Select().from(Task.class).where(Condition.column("id").eq(taskId)).querySingle(); task.completed = true; diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/IApiClient.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/IApiClient.java new file mode 100644 index 000000000..eef7c48cd --- /dev/null +++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/IApiClient.java @@ -0,0 +1,221 @@ +package com.magicmicky.habitrpgwrapper.lib.api; + +import com.habitrpg.android.habitica.ApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.models.AchievementResult; +import com.magicmicky.habitrpgwrapper.lib.models.Challenge; +import com.magicmicky.habitrpgwrapper.lib.models.ChatMessage; +import com.magicmicky.habitrpgwrapper.lib.models.ContentResult; +import com.magicmicky.habitrpgwrapper.lib.models.Group; +import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; +import com.magicmicky.habitrpgwrapper.lib.models.Items; +import com.magicmicky.habitrpgwrapper.lib.models.PostChatMessageResult; +import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationRequest; +import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationResult; +import com.magicmicky.habitrpgwrapper.lib.models.Quest; +import com.magicmicky.habitrpgwrapper.lib.models.Shop; +import com.magicmicky.habitrpgwrapper.lib.models.Status; +import com.magicmicky.habitrpgwrapper.lib.models.Tag; +import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; +import com.magicmicky.habitrpgwrapper.lib.models.UserAuth; +import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse; +import com.magicmicky.habitrpgwrapper.lib.models.UserAuthSocial; +import com.magicmicky.habitrpgwrapper.lib.models.responses.BuyResponse; +import com.magicmicky.habitrpgwrapper.lib.models.responses.FeedResponse; +import com.magicmicky.habitrpgwrapper.lib.models.responses.HabitResponse; +import com.magicmicky.habitrpgwrapper.lib.models.responses.SkillResponse; +import com.magicmicky.habitrpgwrapper.lib.models.responses.UnlockResponse; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskList; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import retrofit2.adapter.rxjava.HttpException; +import rx.Observable; + +public interface IApiClient { + void setLanguageCode(String languageCode); + + Observable getStatus(); + + Observable getContent(); + Observable getContent(String language); + + /* user API */ + + Observable getUser(); + + Observable updateUser(Map updateDictionary); + + Observable registrationLanguage(String registrationLanguage); + + Observable> getInventoryBuyableGear(); + + Observable equipItem(String type, String itemKey); + + Observable buyItem(String itemKey); + + Observable purchaseItem(String type, String itemKey); + + Observable purchaseHourglassItem(String type, String itemKey); + + Observable purchaseMysterySet(String itemKey); + + Observable purchaseQuest(String key); + + Observable sellItem(String itemType, String itemKey); + + Observable feedPet(String petKey, String foodKey); + + Observable hatchPet(String eggKey, String hatchingPotionKey); + + + Observable getTasks(); + + Observable unlockPath(String path); + + Observable getTask(String id); + + Observable postTaskDirection(String id, String direction); + + Observable> postTaskNewPosition(String id, String position); + + Observable scoreChecklistItem(String taskId, String itemId); + + Observable createItem(Task item); + + Observable> createTasks(List tasks); + + Observable updateTask(String id, Task item); + + Observable deleteTask( String id); + + + Observable createTag(Tag tag); + + Observable updateTag(String id, Tag tag); + + Observable deleteTag(String id); + + Observable registerUser(UserAuth auth); + Observable registerUser(String username, String email, String password, String confirmPassword); + + Observable connectLocal(UserAuth auth); + Observable connectUser(String username, String password); + + Observable connectSocial(UserAuthSocial auth); + Observable connectSocial(String network, String userId, String accessToken); + Observable sleep(); + + Observable revive(); + + Observable useSkill( String skillName, String targetType, String targetId); + + Observable useSkill( String skillName, String targetType); + + Observable changeClass(); + + Observable changeClass(String className); + + Observable disableClasses(); + + Observable markPrivateMessagesRead(); + + /* Group API */ + + Observable> listGroups(String type); + + Observable getGroup(String groupId); + + Observable updateGroup( String id, Group item); + + Observable> listGroupChat( String groupId); + + Observable joinGroup(String groupId); + + Observable leaveGroup( String groupId); + + Observable postGroupChat( String groupId, HashMap message); + + Observable deleteMessage( String groupId, String messageId); + + Observable> getGroupMembers( String groupId, Boolean includeAllPublicFields); + + Observable> getGroupMembers( String groupId, Boolean includeAllPublicFields, String lastId); + + // Like returns the full chat list + Observable likeMessage( String groupId, String mid); + + Observable flagMessage(String groupId, String mid); + + Observable seenMessages(String groupId); + + Observable inviteToGroup( String groupId, Map inviteData); + + Observable rejectGroupInvite(String groupId); + + Observable acceptQuest(String groupId); + + Observable rejectQuest(String groupId); + + Observable cancelQuest( String groupId); + + Observable forceStartQuest( String groupId, Group group); + + Observable inviteToQuest( String groupId,String questKey); + + Observable abortQuest( String groupId); + + Observable leaveQuest(String groupId); + + Observable validatePurchase(PurchaseValidationRequest request); + + Observable changeCustomDayStart(Map updateObject); + + //Members URL + Observable GetMember(String memberId); + + Observable GetMemberAchievements(String memberId); + + Observable postPrivateMessage(HashMap messageDetails); + + Observable fetchShopInventory(String identifier); + + //Push notifications + Observable addPushDevice( Map pushDeviceData); + + Observable deletePushDevice(String regId); + + /* challenges api */ + + Observable> getUserChallenges(); + + Observable getChallengeTasks( String challengeId); + + Observable getChallenge(String challengeId); + + Observable joinChallenge(String challengeId); + + Observable leaveChallenge(String challengeId); + + //DEBUG: These calls only work on a local development server + + Observable debugAddTenGems(); + + // Notifications + Observable readNotificaiton(String notificationId); + + ApiClient.ErrorResponse getErrorResponse(HttpException throwable); + + void updateAuthenticationCredentials(String userID, String apiToken); + + boolean hasAuthenticationKeys(); + + Observable retrieveUser(boolean b); + + Observable.Transformer, T> configureApiCallObserver(); +} diff --git a/Habitica/src/test/java/com/habitrpg/android/habitica/api/BaseAPITests.java b/Habitica/src/test/java/com/habitrpg/android/habitica/api/BaseAPITests.java index c960f92a4..728b8e16e 100644 --- a/Habitica/src/test/java/com/habitrpg/android/habitica/api/BaseAPITests.java +++ b/Habitica/src/test/java/com/habitrpg/android/habitica/api/BaseAPITests.java @@ -1,7 +1,7 @@ package com.habitrpg.android.habitica.api; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.BuildConfig; import com.habitrpg.android.habitica.HostConfig; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; @@ -18,7 +18,7 @@ import rx.observers.TestSubscriber; public class BaseAPITests { - public APIHelper apiHelper; + public IApiClient apiClient; public HostConfig hostConfig; public String username; @@ -33,14 +33,14 @@ public class BaseAPITests { BuildConfig.PORT, "", ""); - apiHelper = new APIHelper(APIHelper.createGsonFactory(), hostConfig); + apiClient = new ApiClient(ApiClient.createGsonFactory(), hostConfig); generateUser(); } public void generateUser() { TestSubscriber> testSubscriber = new TestSubscriber<>(); username = UUID.randomUUID().toString(); - apiHelper.registerUser(username, username+"@example.com", password, password) + apiClient.registerUser(username, username+"@example.com", password, password) .subscribe(testSubscriber); testSubscriber.assertCompleted(); UserAuthResponse response = testSubscriber.getOnNextEvents().get(0).getData(); @@ -51,7 +51,7 @@ public class BaseAPITests { public HabitRPGUser getUser() { TestSubscriber> userSubscriber = new TestSubscriber<>(); - apiHelper.apiService.getUser().subscribe(userSubscriber); + apiClient.getUser().subscribe(userSubscriber); userSubscriber.assertNoErrors(); userSubscriber.assertCompleted(); HabitRPGUser user = userSubscriber.getOnNextEvents().get(0).getData(); diff --git a/Habitica/src/test/java/com/habitrpg/android/habitica/api/SocialAPITests.java b/Habitica/src/test/java/com/habitrpg/android/habitica/api/SocialAPITests.java index 5aca0be29..76e4dbc09 100644 --- a/Habitica/src/test/java/com/habitrpg/android/habitica/api/SocialAPITests.java +++ b/Habitica/src/test/java/com/habitrpg/android/habitica/api/SocialAPITests.java @@ -38,7 +38,7 @@ public class SocialAPITests extends BaseAPITests { HashMap messageObject = new HashMap<>(); messageObject.put("message", "Foo Bar"+messageSuffix); TestSubscriber> testSubscriber = new TestSubscriber<>(); - apiHelper.apiService.postGroupChat(groupID, messageObject).subscribe(testSubscriber); + apiClient.postGroupChat(groupID, messageObject).subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertCompleted(); PostChatMessageResult result = testSubscriber.getOnNextEvents().get(0).getData(); @@ -51,7 +51,7 @@ public class SocialAPITests extends BaseAPITests { postMessage(groupID, "1"); TestSubscriber> testSubscriber = new TestSubscriber<>(); - apiHelper.apiService.getGroup(groupID).subscribe(testSubscriber); + apiClient.getGroup(groupID).subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertCompleted(); testSubscriber.assertValueCount(1); @@ -64,7 +64,7 @@ public class SocialAPITests extends BaseAPITests { postMessage(groupID, "2"); TestSubscriber>> testSubscriber = new TestSubscriber<>(); - apiHelper.apiService.listGroupChat(groupID).subscribe(testSubscriber); + apiClient.listGroupChat(groupID).subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertCompleted(); testSubscriber.assertValueCount(1); @@ -74,7 +74,7 @@ public class SocialAPITests extends BaseAPITests { public void tearDown() { TestSubscriber> testSubscriber = new TestSubscriber<>(); for (String messageID : this.messagesIDs) { - apiHelper.apiService.deleteMessage("habitrpg", messageID) + apiClient.deleteMessage("habitrpg", messageID) .subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertCompleted(); diff --git a/Habitica/src/test/java/com/habitrpg/android/habitica/api/TagAPITests.java b/Habitica/src/test/java/com/habitrpg/android/habitica/api/TagAPITests.java index 66418f61e..5a7602111 100644 --- a/Habitica/src/test/java/com/habitrpg/android/habitica/api/TagAPITests.java +++ b/Habitica/src/test/java/com/habitrpg/android/habitica/api/TagAPITests.java @@ -26,7 +26,7 @@ public class TagAPITests extends BaseAPITests { TestSubscriber> testSubscriber = new TestSubscriber<>(); Tag tag = new Tag(); tag.setName("foo"); - apiHelper.apiService.createTag(tag).subscribe(testSubscriber); + apiClient.createTag(tag).subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertCompleted(); testSubscriber.assertValueCount(1); @@ -44,7 +44,7 @@ public class TagAPITests extends BaseAPITests { //Attempt to update the test user's first tag String testId = getUser().getTags().get(0).getId(); - apiHelper.apiService.updateTag(testId,t).subscribe(testSubscriber); + apiClient.updateTag(testId,t).subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertCompleted(); Assert.assertEquals(newname,testSubscriber.getOnNextEvents().get(0).getData().getName()); @@ -56,7 +56,7 @@ public class TagAPITests extends BaseAPITests { TestSubscriber> testSub = new TestSubscriber<>(); String testId = getUser().getTags().get(0).getId(); - apiHelper.apiService.deleteTag(testId).subscribe(testSub); + apiClient.deleteTag(testId).subscribe(testSub); testSub.assertNoErrors(); testSub.assertCompleted(); } diff --git a/Habitica/src/test/java/com/habitrpg/android/habitica/api/TaskAPITests.java b/Habitica/src/test/java/com/habitrpg/android/habitica/api/TaskAPITests.java index 5797fd977..d80df7370 100644 --- a/Habitica/src/test/java/com/habitrpg/android/habitica/api/TaskAPITests.java +++ b/Habitica/src/test/java/com/habitrpg/android/habitica/api/TaskAPITests.java @@ -36,10 +36,10 @@ public class TaskAPITests extends BaseAPITests { public void setUp() { super.setUp(); TestSubscriber> oldTaskSubscriber = new TestSubscriber<>(); - apiHelper.apiService.getTasks().subscribe(oldTaskSubscriber); + apiClient.getTasks().subscribe(oldTaskSubscriber); TaskList tasks = oldTaskSubscriber.getOnNextEvents().get(0).getData(); for (Task task : tasks.tasks.values()) { - apiHelper.apiService.deleteTask(task.getId()).subscribe(new TestSubscriber<>()); + apiClient.deleteTask(task.getId()).subscribe(new TestSubscriber<>()); } List randomTasks = new ArrayList<>(); @@ -56,7 +56,7 @@ public class TaskAPITests extends BaseAPITests { reward1 = randomTasks.get(6); randomTasks.add(createRandomTask("8", "reward")); TestSubscriber>> testSubscriber = new TestSubscriber<>(); - apiHelper.apiService.createTasks(randomTasks).subscribe(testSubscriber); + apiClient.createTasks(randomTasks).subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertCompleted(); } @@ -75,7 +75,7 @@ public class TaskAPITests extends BaseAPITests { @Test public void shouldLoadAllTasksFromServer() { TestSubscriber> testSubscriber = new TestSubscriber<>(); - apiHelper.apiService.getTasks().subscribe(testSubscriber); + apiClient.getTasks().subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertCompleted(); TaskList taskList = testSubscriber.getOnNextEvents().get(0).getData(); @@ -85,7 +85,7 @@ public class TaskAPITests extends BaseAPITests { @Test public void shouldBeAbleToScoreTaskUp() { TestSubscriber> testSubscriber = new TestSubscriber<>(); - apiHelper.apiService.postTaskDirection(habit1.getId(), "up").subscribe(testSubscriber); + apiClient.postTaskDirection(habit1.getId(), "up").subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertCompleted(); TaskDirectionData data = testSubscriber.getOnNextEvents().get(0).getData(); @@ -95,7 +95,7 @@ public class TaskAPITests extends BaseAPITests { @Test public void shouldBeAbleToScoreTaskDown() { TestSubscriber> testSubscriber = new TestSubscriber<>(); - apiHelper.apiService.postTaskDirection(habit1.getId(), "down").subscribe(testSubscriber); + apiClient.postTaskDirection(habit1.getId(), "down").subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertCompleted(); TaskDirectionData data = testSubscriber.getOnNextEvents().get(0).getData(); @@ -105,11 +105,11 @@ public class TaskAPITests extends BaseAPITests { @Test public void shouldBeAbleToDeleteATask() { TestSubscriber> testSubscriber = new TestSubscriber<>(); - apiHelper.apiService.deleteTask(habit1.getId()).subscribe(testSubscriber); + apiClient.deleteTask(habit1.getId()).subscribe(testSubscriber); testSubscriber.assertCompleted(); testSubscriber.assertNoErrors(); TestSubscriber> newTaskListSubscriber = new TestSubscriber<>(); - apiHelper.apiService.getTasks().subscribe(newTaskListSubscriber); + apiClient.getTasks().subscribe(newTaskListSubscriber); TaskList taskList = newTaskListSubscriber.getOnNextEvents().get(0).getData(); assertEquals(7, taskList.tasks.size()); } diff --git a/Habitica/src/test/java/com/habitrpg/android/habitica/api/UserAPITests.java b/Habitica/src/test/java/com/habitrpg/android/habitica/api/UserAPITests.java index 31b71b76a..89ed0bec7 100644 --- a/Habitica/src/test/java/com/habitrpg/android/habitica/api/UserAPITests.java +++ b/Habitica/src/test/java/com/habitrpg/android/habitica/api/UserAPITests.java @@ -5,9 +5,6 @@ import com.habitrpg.android.habitica.BuildConfig; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse; import com.magicmicky.habitrpgwrapper.lib.models.responses.HabitResponse; -import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskList; - -import junit.framework.Assert; import org.junit.Test; import org.junit.runner.RunWith; @@ -30,7 +27,7 @@ public class UserAPITests extends BaseAPITests { @Test public void shouldLoadUserFromServer() { TestSubscriber> testSubscriber = new TestSubscriber<>(); - apiHelper.apiService.getUser().subscribe(testSubscriber); + apiClient.getUser().subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertCompleted(); testSubscriber.assertValueCount(1); @@ -39,7 +36,7 @@ public class UserAPITests extends BaseAPITests { @Test public void shouldLoadCompleteUserFromServer() { TestSubscriber> testSubscriber = new TestSubscriber<>(); - apiHelper.retrieveUser(true).subscribe(testSubscriber); + apiClient.retrieveUser(true).subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertCompleted(); testSubscriber.assertValueCount(1); @@ -51,7 +48,7 @@ public class UserAPITests extends BaseAPITests { hostConfig.setApi(""); TestSubscriber> testSubscriber = new TestSubscriber<>(); username = UUID.randomUUID().toString(); - apiHelper.registerUser(username, username+"@example.com", password, password) + apiClient.registerUser(username, username+"@example.com", password, password) .subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertCompleted(); @@ -64,7 +61,7 @@ public class UserAPITests extends BaseAPITests { @Test public void shouldLoginExistingUser() { TestSubscriber> testSubscriber = new TestSubscriber<>(); - apiHelper.connectUser(username, password).subscribe(testSubscriber); + apiClient.connectUser(username, password).subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertCompleted(); UserAuthResponse response = testSubscriber.getOnNextEvents().get(0).getData(); diff --git a/Habitica/src/test/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManagerTest.java b/Habitica/src/test/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManagerTest.java index bf76856be..a058ae973 100644 --- a/Habitica/src/test/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManagerTest.java +++ b/Habitica/src/test/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManagerTest.java @@ -2,47 +2,32 @@ package com.habitrpg.android.habitica.helpers; import android.app.Activity; import android.app.AlertDialog; -import android.content.Context; import android.os.Build; -import com.habitrpg.android.habitica.APIHelper; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.BuildConfig; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.HostConfig; -import com.habitrpg.android.habitica.ui.activities.AboutActivity; -import com.habitrpg.android.habitica.ui.activities.BaseActivity; -import com.habitrpg.android.habitica.ui.activities.IntroActivity; -import com.habitrpg.android.habitica.ui.activities.MainActivity; import com.magicmicky.habitrpgwrapper.lib.models.Notification; -import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse; import com.magicmicky.habitrpgwrapper.lib.models.notifications.NotificationData; -import com.magicmicky.habitrpgwrapper.lib.models.responses.HabitResponse; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Mock; import org.mockito.Mockito; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; -import org.robolectric.Shadows; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowAlertDialog; -import java.security.InvalidParameterException; import java.util.ArrayList; import java.util.List; -import java.util.UUID; - -import retrofit2.converter.gson.GsonConverterFactory; -import rx.observers.TestSubscriber; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; /** * Created by krh12 on 12/9/2016. @@ -52,7 +37,7 @@ import static org.mockito.Mockito.when; @RunWith(RobolectricTestRunner.class) public class PopupNotificationsManagerTest { - public APIHelper apiHelper; + public IApiClient apiClient; public HostConfig hostConfig; public String username; @@ -65,13 +50,13 @@ public class PopupNotificationsManagerTest { "", ""); - apiHelper = new APIHelper(APIHelper.createGsonFactory(), hostConfig); + apiClient = new ApiClient(ApiClient.createGsonFactory(), hostConfig); } @Test public void itDoesNothingWhenNotificationsListIsEmpty() { List notifications = new ArrayList<>(); - PopupNotificationsManager popupNotificationsManager = PopupNotificationsManager.getInstance(apiHelper); + PopupNotificationsManager popupNotificationsManager = PopupNotificationsManager.getInstance(apiClient); popupNotificationsManager.showNotificationDialog(notifications); AlertDialog alert = From cb7395bc4feb976f1bb4d283e811cec10f0fa6b9 Mon Sep 17 00:00:00 2001 From: Negue Date: Tue, 31 Jan 2017 23:57:25 +0100 Subject: [PATCH 04/34] add more usecases / extract them from MainActivity --- .../android/habitica/data/TaskRepository.java | 3 +- .../implementation/TaskRepositoryImpl.java | 8 +- .../interactors/BuyRewardUseCase.java | 42 +++++++ .../interactors/ChecklistCheckUseCase.java | 40 ++++++ .../interactors/DailyCheckUseCase.java | 46 +++++++ .../interactors/HabitScoreUseCase.java | 3 +- .../interactors/TodoCheckUseCase.java | 46 +++++++ .../habitica/ui/activities/MainActivity.java | 119 ++++++++++-------- 8 files changed, 249 insertions(+), 58 deletions(-) create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/interactors/BuyRewardUseCase.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/interactors/ChecklistCheckUseCase.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/interactors/DailyCheckUseCase.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/interactors/TodoCheckUseCase.java diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java index 1fd73845b..909dd535d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java @@ -15,5 +15,6 @@ public interface TaskRepository extends BaseRepository { Observable refreshTasks(TasksOrder tasksOrder); - Observable scoreHabit(Task task, boolean up); + Observable taskChecked(Task task, boolean up); + Observable scoreChecklistItem(String taskId, String itemId); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java index f5ba97ab1..fcf1fe723 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java @@ -32,7 +32,7 @@ public class TaskRepositoryImpl extends BaseRepositoryImpl } @Override - public Observable scoreHabit(Task task, boolean up) { + public Observable taskChecked(Task task, boolean up) { return this.apiClient.postTaskDirection(task.getId(), (up ? TaskDirection.up : TaskDirection.down).toString()) .doOnNext(res -> { // save local task changes @@ -43,4 +43,10 @@ public class TaskRepositoryImpl extends BaseRepositoryImpl } }); } + + public Observable scoreChecklistItem(String taskId, String itemId){ + return apiClient.scoreChecklistItem(taskId, itemId).doOnNext(res -> { + this.localRepository.saveTask(res); + }); + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/BuyRewardUseCase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/BuyRewardUseCase.java new file mode 100644 index 000000000..849d14654 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/BuyRewardUseCase.java @@ -0,0 +1,42 @@ +package com.habitrpg.android.habitica.interactors; + +import com.habitrpg.android.habitica.data.TaskRepository; +import com.habitrpg.android.habitica.executors.PostExecutionThread; +import com.habitrpg.android.habitica.executors.ThreadExecutor; +import com.habitrpg.android.habitica.helpers.SoundManager; +import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; + +import javax.inject.Inject; + +import rx.Observable; + +public class BuyRewardUseCase extends UseCase { + + private TaskRepository taskRepository; + private SoundManager soundManager; + + @Inject + public BuyRewardUseCase(TaskRepository taskRepository, SoundManager soundManager, + ThreadExecutor threadExecutor, PostExecutionThread postExecutionThread) { + super(threadExecutor, postExecutionThread); + this.taskRepository = taskRepository; + this.soundManager = soundManager; + } + + @Override + protected Observable buildUseCaseObservable(BuyRewardUseCase.RequestValues requestValues) { + return taskRepository.taskChecked(requestValues.task, false).doOnNext(res -> { + + soundManager.loadAndPlayAudio(SoundManager.SoundReward); + }); + } + + public static final class RequestValues implements UseCase.RequestValues { + protected final Task task; + + public RequestValues(Task task) { + this.task = task; + } + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/ChecklistCheckUseCase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/ChecklistCheckUseCase.java new file mode 100644 index 000000000..ca1d4b50e --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/ChecklistCheckUseCase.java @@ -0,0 +1,40 @@ +package com.habitrpg.android.habitica.interactors; + +import com.habitrpg.android.habitica.data.TaskRepository; +import com.habitrpg.android.habitica.executors.PostExecutionThread; +import com.habitrpg.android.habitica.executors.ThreadExecutor; +import com.habitrpg.android.habitica.helpers.SoundManager; +import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; + +import javax.inject.Inject; + +import rx.Observable; + +public class ChecklistCheckUseCase extends UseCase { + + private TaskRepository taskRepository; + + @Inject + public ChecklistCheckUseCase(TaskRepository taskRepository, ThreadExecutor threadExecutor, PostExecutionThread postExecutionThread) { + super(threadExecutor, postExecutionThread); + this.taskRepository = taskRepository; + } + + @Override + protected Observable buildUseCaseObservable(ChecklistCheckUseCase.RequestValues requestValues) { + return taskRepository.scoreChecklistItem(requestValues.taskId, requestValues.itemId); + } + + public static final class RequestValues implements UseCase.RequestValues { + + protected final String itemId; + + protected final String taskId; + + public RequestValues(String taskId, String itemId) { + this.taskId = taskId; + this.itemId = itemId; + } + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/DailyCheckUseCase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/DailyCheckUseCase.java new file mode 100644 index 000000000..77909df7d --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/DailyCheckUseCase.java @@ -0,0 +1,46 @@ +package com.habitrpg.android.habitica.interactors; + +import com.habitrpg.android.habitica.data.TaskRepository; +import com.habitrpg.android.habitica.executors.PostExecutionThread; +import com.habitrpg.android.habitica.executors.ThreadExecutor; +import com.habitrpg.android.habitica.helpers.SoundManager; +import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; + +import javax.inject.Inject; + +import rx.Observable; + +public class DailyCheckUseCase extends UseCase { + + private TaskRepository taskRepository; + private SoundManager soundManager; + + @Inject + public DailyCheckUseCase(TaskRepository taskRepository, SoundManager soundManager, + ThreadExecutor threadExecutor, PostExecutionThread postExecutionThread) { + super(threadExecutor, postExecutionThread); + this.taskRepository = taskRepository; + this.soundManager = soundManager; + } + + @Override + protected Observable buildUseCaseObservable(DailyCheckUseCase.RequestValues requestValues) { + return taskRepository.taskChecked(requestValues.task, requestValues.Up).doOnNext(res -> { + + soundManager.loadAndPlayAudio(SoundManager.SoundDaily); + }); + } + + public static final class RequestValues implements UseCase.RequestValues { + + protected boolean Up = false; + + protected final Task task; + + public RequestValues(Task task, boolean up) { + this.task = task; + this.Up = up; + } + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/HabitScoreUseCase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/HabitScoreUseCase.java index e96d49854..92c347816 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/HabitScoreUseCase.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/HabitScoreUseCase.java @@ -13,7 +13,6 @@ import rx.Observable; public class HabitScoreUseCase extends UseCase { - private TaskRepository taskRepository; private SoundManager soundManager; @@ -27,7 +26,7 @@ public class HabitScoreUseCase extends UseCase buildUseCaseObservable(RequestValues requestValues) { - return taskRepository.scoreHabit(requestValues.habit, requestValues.Up).doOnNext(res -> { + return taskRepository.taskChecked(requestValues.habit, requestValues.Up).doOnNext(res -> { soundManager.loadAndPlayAudio(requestValues.Up ? SoundManager.SoundPlusHabit : SoundManager.SoundMinusHabit); }); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/TodoCheckUseCase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/TodoCheckUseCase.java new file mode 100644 index 000000000..b3734f8fc --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/TodoCheckUseCase.java @@ -0,0 +1,46 @@ +package com.habitrpg.android.habitica.interactors; + +import com.habitrpg.android.habitica.data.TaskRepository; +import com.habitrpg.android.habitica.executors.PostExecutionThread; +import com.habitrpg.android.habitica.executors.ThreadExecutor; +import com.habitrpg.android.habitica.helpers.SoundManager; +import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; + +import javax.inject.Inject; + +import rx.Observable; + +public class TodoCheckUseCase extends UseCase { + + private TaskRepository taskRepository; + private SoundManager soundManager; + + @Inject + public TodoCheckUseCase(TaskRepository taskRepository, SoundManager soundManager, + ThreadExecutor threadExecutor, PostExecutionThread postExecutionThread) { + super(threadExecutor, postExecutionThread); + this.taskRepository = taskRepository; + this.soundManager = soundManager; + } + + @Override + protected Observable buildUseCaseObservable(TodoCheckUseCase.RequestValues requestValues) { + return taskRepository.taskChecked(requestValues.task, requestValues.Up).doOnNext(res -> { + + soundManager.loadAndPlayAudio(SoundManager.SoundTodo); + }); + } + + public static final class RequestValues implements UseCase.RequestValues { + + protected boolean Up = false; + + protected final Task task; + + public RequestValues(Task task, boolean up) { + this.task = task; + this.Up = up; + } + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java index d844ff981..d78c87827 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java @@ -1,6 +1,10 @@ package com.habitrpg.android.habitica.ui.activities; import com.facebook.drawee.view.SimpleDraweeView; +import com.habitrpg.android.habitica.interactors.BuyRewardUseCase; +import com.habitrpg.android.habitica.interactors.ChecklistCheckUseCase; +import com.habitrpg.android.habitica.interactors.DailyCheckUseCase; +import com.habitrpg.android.habitica.interactors.TodoCheckUseCase; import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.HostConfig; @@ -196,6 +200,18 @@ public class MainActivity extends BaseActivity implements Action1, Ha @Inject HabitScoreUseCase habitScoreUseCase; + @Inject + DailyCheckUseCase dailyCheckUseCase; + + @Inject + TodoCheckUseCase todoCheckUseCase; + + @Inject + BuyRewardUseCase buyRewardUseCase; + + @Inject + ChecklistCheckUseCase checklistCheckUseCase; + private Drawer drawer; private Drawer filterDrawer; private AccountHeader accountHeader; @@ -244,10 +260,10 @@ public class MainActivity extends BaseActivity implements Action1, Ha super.onCreate(savedInstanceState); SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); - LanguageHelper languageHelper = new LanguageHelper(sharedPreferences.getString("language","en")); + LanguageHelper languageHelper = new LanguageHelper(sharedPreferences.getString("language", "en")); Locale.setDefault(languageHelper.getLocale()); Configuration configuration = new Configuration(); - if (android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN){ + if (android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN) { configuration.locale = languageHelper.getLocale(); } else { configuration.setLocale(languageHelper.getLocale()); @@ -256,7 +272,6 @@ public class MainActivity extends BaseActivity implements Action1, Ha getResources().getDisplayMetrics()); - if (!HabiticaApplication.checkUserAuthentication(this, hostConfig)) { return; } @@ -351,10 +366,10 @@ public class MainActivity extends BaseActivity implements Action1, Ha } private void updateWidget(Class widgetClass) { - Intent intent = new Intent(this,widgetClass); + Intent intent = new Intent(this, widgetClass); intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); int ids[] = AppWidgetManager.getInstance(getApplication()).getAppWidgetIds(new ComponentName(getApplication(), widgetClass)); - intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,ids); + intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids); sendBroadcast(intent); } @@ -402,7 +417,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha Preferences preferences = user.getPreferences(); - if(preferences!= null) { + if (preferences != null) { apiClient.setLanguageCode(preferences.getLanguage()); } @@ -882,13 +897,12 @@ public class MainActivity extends BaseActivity implements Action1, Ha this.drawer.setSelectionAtPosition(this.activeFragment.fragmentSidebarPosition, false); } - private void setTranslatedFragmentTitle(BaseMainFragment fragment){ - if(fragment!= null && fragment.customTitle() != null){ - getSupportActionBar().setTitle(fragment.customTitle()); - } - else if(user != null && user.getProfile() != null){ - getSupportActionBar().setTitle(user.getProfile().getName()); - } + private void setTranslatedFragmentTitle(BaseMainFragment fragment) { + if (fragment != null && fragment.customTitle() != null) { + getSupportActionBar().setTitle(fragment.customTitle()); + } else if (user != null && user.getProfile() != null) { + getSupportActionBar().setTitle(user.getProfile().getName()); + } } public void onBackPressed() { @@ -913,13 +927,13 @@ public class MainActivity extends BaseActivity implements Action1, Ha if (resultCode == SELECT_CLASS_RESULT) { if (this.apiClient != null) { this.apiClient.retrieveUser(true) - + .subscribe(new HabitRPGUserCallback(this), throwable -> { }); } } else if (requestCode == GEM_PURCHASE_REQUEST) { this.apiClient.retrieveUser(true) - + .subscribe(new HabitRPGUserCallback(this), throwable -> { }); } @@ -949,7 +963,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha @Subscribe public void onEvent(EquipCommand event) { this.apiClient.equipItem(event.type, event.key) - .subscribe(new ItemsCallback(this, this.user), throwable -> { + .subscribe(new ItemsCallback(this, this.user), throwable -> { }); } @@ -958,7 +972,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha this.user.setBalance(this.user.getBalance() - event.balanceDiff); this.setUserData(false); apiClient.unlockPath(event.path) - + .subscribe(new UnlockCallback(this, this.user), throwable -> { }); } @@ -984,13 +998,13 @@ public class MainActivity extends BaseActivity implements Action1, Ha observable = apiClient.purchaseItem(event.item.purchaseType, event.item.key); } observable - + .doOnNext(aVoid -> { showSnackbar(this, floatingMenuWrapper, getString(R.string.successful_purchase, event.item.text), SnackbarDisplayType.NORMAL); }) .subscribe(buyResponse -> { apiClient.retrieveUser(false) - + .subscribe(new HabitRPGUserCallback(this), throwable -> { }); }, throwable -> { @@ -1066,12 +1080,10 @@ public class MainActivity extends BaseActivity implements Action1, Ha }, throwable -> { }); } else { - soundManager.loadAndPlayAudio(SoundManager.SoundReward); - // user created Rewards - apiClient.postTaskDirection(rewardKey, TaskDirection.down.toString()) - - .subscribe(new TaskScoringCallback(this, rewardKey), throwable -> { - }); + buyRewardUseCase.observable(new BuyRewardUseCase.RequestValues(event.Reward)) + .subscribe(res -> { + onTaskDataReceived(res, event.Reward); + }, error -> {}); } //Update the users gold @@ -1110,7 +1122,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha @Subscribe public void onEvent(SellItemCommand event) { this.apiClient.sellItem(event.item.getType(), event.item.getKey()) - + .subscribe(habitRPGUser -> { user.setItems(habitRPGUser.getItems()); user.save(); @@ -1126,7 +1138,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha return; } this.apiClient.hatchPet(event.usingEgg.getKey(), event.usingHatchingPotion.getKey()) - + .subscribe(new ItemsCallback(user1 -> { FrameLayout petWrapper = (FrameLayout) getLayoutInflater().inflate(R.layout.pet_imageview, null); SimpleDraweeView petImageView = (SimpleDraweeView) petWrapper.findViewById(R.id.pet_imageview); @@ -1164,7 +1176,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha } final Pet pet = event.usingPet; this.apiClient.feedPet(event.usingPet.getKey(), event.usingFood.getKey()) - + .subscribe(feedResponse -> { MainActivity.this.user.getItems().getPets().put(pet.getKey(), feedResponse.value); MainActivity.this.user.getItems().getFood().put(event.usingFood.getKey(), event.usingFood.getOwned() - 1); @@ -1251,7 +1263,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha displayLevelUpDialog(lvl); this.apiClient.retrieveUser(true) - + .subscribe(new HabitRPGUserCallback(this), throwable -> { }); user.getStats().setLvl(lvl); @@ -1312,7 +1324,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha .setPositiveButton(R.string.faint_button, (dialog, which) -> { faintDialog = null; apiClient.revive() - + .subscribe(new MergeUserCallback(MainActivity.this, MainActivity.this.user), throwable -> { }); }) @@ -1428,7 +1440,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha Map updateData = new HashMap<>(); updateData.put(path, true); apiClient.updateUser(updateData) - + .subscribe(new MergeUserCallback(this, user), throwable -> { }); this.overlayFrameLayout.removeView(this.activeTutorialView); @@ -1482,29 +1494,32 @@ public class MainActivity extends BaseActivity implements Action1, Ha @Subscribe public void onEvent(TaskCheckedCommand event) { - apiClient.postTaskDirection(event.Task.getId(), (event.Task.getCompleted() ? TaskDirection.down : TaskDirection.up).toString()) - - .subscribe(new TaskScoringCallback(this, event.Task.getId()), throwable -> { - event.Task.completed = !event.Task.completed; - event.Task.save(); - EventBus.getDefault().post(new TaskUpdatedEvent(event.Task)); - }); - - switch(event.Task.type){ + switch (event.Task.type) { case Task.TYPE_DAILY: { - soundManager.loadAndPlayAudio(SoundManager.SoundDaily); - } break; + dailyCheckUseCase.observable(new DailyCheckUseCase.RequestValues(event.Task, !event.Task.getCompleted())) + .subscribe(res -> { + EventBus.getDefault().post(new TaskUpdatedEvent(event.Task)); + }, error -> { + }); + } + break; case Task.TYPE_TODO: { - soundManager.loadAndPlayAudio(SoundManager.SoundTodo); - } break; + todoCheckUseCase.observable(new TodoCheckUseCase.RequestValues(event.Task, !event.Task.getCompleted())) + .subscribe(res -> { + EventBus.getDefault().post(new TaskUpdatedEvent(event.Task)); + }, error -> { + }); + } + break; } } @Subscribe public void onEvent(ChecklistCheckedCommand event) { - apiClient.scoreChecklistItem(event.task.getId(), event.item.getId()) - - .subscribe(new TaskUpdateCallback(), throwable -> { + checklistCheckUseCase.observable(new ChecklistCheckUseCase.RequestValues(event.task.getId(), event.item.getId())) + .subscribe(res -> { + EventBus.getDefault().post(new TaskUpdatedEvent(event.task)); + }, error -> { }); } @@ -1514,8 +1529,6 @@ public class MainActivity extends BaseActivity implements Action1, Ha .subscribe(res -> { onTaskDataReceived(res, event.habit); }, error -> { - - }); } @@ -1524,12 +1537,10 @@ public class MainActivity extends BaseActivity implements Action1, Ha Task task = event.task; if (event.created) { this.apiClient.createItem(task) - .subscribe(new TaskCreationCallback(), throwable -> { }); } else { this.apiClient.updateTask(task.getId(), task) - .subscribe(new TaskUpdateCallback(), throwable -> { }); } @@ -1629,7 +1640,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha @Subscribe public void onEvent(OpenFullProfileCommand cmd) { - if(cmd.MemberId.equals("system")) + if (cmd.MemberId.equals("system")) return; Bundle bundle = new Bundle(); @@ -1645,8 +1656,8 @@ public class MainActivity extends BaseActivity implements Action1, Ha this.filterDrawer.removeItemByPosition(position); } - public void updateFilterDrawerItem (IDrawerItem item, int position) { + public void updateFilterDrawerItem(IDrawerItem item, int position) { this.filterDrawer.removeItemByPosition(position); - this.filterDrawer.addItemAtPosition(item,position); + this.filterDrawer.addItemAtPosition(item, position); } } From 1636ccab6698dbca0ade1034d161b1e466038d66 Mon Sep 17 00:00:00 2001 From: Negue Date: Mon, 6 Feb 2017 23:20:05 +0100 Subject: [PATCH 05/34] Extract CheckClassSelectionUseCase / DisplayItemDropUseCase / LevelUpUseCase / NotifyUserUseCase - subscribe to Commands in ChallengeDetailActivity --- .../android/habitica/helpers/MathHelper.java | 7 + .../CheckClassSelectionUseCase.java | 78 ++++++++ .../interactors/DailyCheckUseCase.java | 2 +- .../interactors/DisplayItemDropUseCase.java | 61 +++++++ .../habitica/interactors/LevelUpUseCase.java | 104 +++++++++++ .../interactors/NotifyUserUseCase.java | 112 ++++++++++++ .../activities/ChallengeDetailActivity.java | 136 +++++++++++++- .../habitica/ui/activities/MainActivity.java | 167 ++++-------------- .../ui/fragments/skills/SkillsFragment.java | 7 +- .../ChallengeTasksRecyclerViewFragment.java | 2 +- .../habitica/widget/BaseWidgetProvider.java | 38 ++-- .../habitrpgwrapper/lib/api/ApiService.java | 3 - 12 files changed, 549 insertions(+), 168 deletions(-) create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/helpers/MathHelper.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/interactors/CheckClassSelectionUseCase.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/interactors/DisplayItemDropUseCase.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/interactors/LevelUpUseCase.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/interactors/NotifyUserUseCase.java diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/MathHelper.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/MathHelper.java new file mode 100644 index 000000000..b7160c9b1 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/MathHelper.java @@ -0,0 +1,7 @@ +package com.habitrpg.android.habitica.helpers; + +public class MathHelper { + static public Double round(Double value, int n) { + return (Math.round(value * Math.pow(10, n))) / (Math.pow(10, n)); + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/CheckClassSelectionUseCase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/CheckClassSelectionUseCase.java new file mode 100644 index 000000000..ae72109f0 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/CheckClassSelectionUseCase.java @@ -0,0 +1,78 @@ +package com.habitrpg.android.habitica.interactors; + +import android.content.Intent; +import android.os.Bundle; + +import com.habitrpg.android.habitica.HabiticaApplication; +import com.habitrpg.android.habitica.events.SelectClassEvent; +import com.habitrpg.android.habitica.executors.PostExecutionThread; +import com.habitrpg.android.habitica.executors.ThreadExecutor; +import com.habitrpg.android.habitica.ui.activities.ClassSelectionActivity; +import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; + +import javax.inject.Inject; + +import rx.Observable; + +import static com.habitrpg.android.habitica.ui.activities.MainActivity.SELECT_CLASS_RESULT; + +public class CheckClassSelectionUseCase extends UseCase { + @Inject + public CheckClassSelectionUseCase(ThreadExecutor threadExecutor, PostExecutionThread postExecutionThread) { + super(threadExecutor, postExecutionThread); + } + + @Override + protected Observable buildUseCaseObservable(RequestValues requestValues) { + return Observable.from(() -> { + + HabitRPGUser user = requestValues.user; + + if(requestValues.selectClassEvent == null) { + if (user.getStats().getLvl() > 10 && + !user.getPreferences().getDisableClasses() && + !user.getFlags().getClassSelected()) { + SelectClassEvent event = new SelectClassEvent(); + event.isInitialSelection = true; + event.currentClass = user.getStats().get_class().toString(); + displayClassSelectionActivity(user, event); + } + } else { + displayClassSelectionActivity(user, requestValues.selectClassEvent); + } + + return null; + }); + } + + private void displayClassSelectionActivity(HabitRPGUser user, SelectClassEvent event) { + Bundle bundle = new Bundle(); + bundle.putString("size", user.getPreferences().getSize()); + bundle.putString("skin", user.getPreferences().getSkin()); + bundle.putString("shirt", user.getPreferences().getShirt()); + bundle.putInt("hairBangs", user.getPreferences().getHair().getBangs()); + bundle.putInt("hairBase", user.getPreferences().getHair().getBase()); + bundle.putString("hairColor", user.getPreferences().getHair().getColor()); + bundle.putInt("hairMustache", user.getPreferences().getHair().getMustache()); + bundle.putInt("hairBeard", user.getPreferences().getHair().getBeard()); + bundle.putBoolean("isInitialSelection", event.isInitialSelection); + bundle.putString("currentClass", event.currentClass); + + Intent intent = new Intent(HabiticaApplication.currentActivity, ClassSelectionActivity.class); + intent.putExtras(bundle); + HabiticaApplication.currentActivity.startActivityForResult(intent, SELECT_CLASS_RESULT); + } + + public static final class RequestValues implements UseCase.RequestValues { + + + private HabitRPGUser user; + private SelectClassEvent selectClassEvent; + + public RequestValues(HabitRPGUser user, SelectClassEvent selectClassEvent) { + + this.user = user; + this.selectClassEvent = selectClassEvent; + } + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/DailyCheckUseCase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/DailyCheckUseCase.java index 77909df7d..61a8c0917 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/DailyCheckUseCase.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/DailyCheckUseCase.java @@ -25,7 +25,7 @@ public class DailyCheckUseCase extends UseCase buildUseCaseObservable(DailyCheckUseCase.RequestValues requestValues) { + protected Observable buildUseCaseObservable(RequestValues requestValues) { return taskRepository.taskChecked(requestValues.task, requestValues.Up).doOnNext(res -> { soundManager.loadAndPlayAudio(SoundManager.SoundDaily); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/DisplayItemDropUseCase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/DisplayItemDropUseCase.java new file mode 100644 index 000000000..978d8af73 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/DisplayItemDropUseCase.java @@ -0,0 +1,61 @@ +package com.habitrpg.android.habitica.interactors; + +import android.os.Handler; +import android.support.v7.app.AppCompatActivity; +import android.view.View; + +import com.habitrpg.android.habitica.executors.PostExecutionThread; +import com.habitrpg.android.habitica.executors.ThreadExecutor; +import com.habitrpg.android.habitica.helpers.SoundManager; +import com.habitrpg.android.habitica.ui.helpers.UiUtils; +import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; + +import javax.inject.Inject; + +import rx.Observable; + +import static com.habitrpg.android.habitica.ui.helpers.UiUtils.showSnackbar; + +public class DisplayItemDropUseCase extends UseCase { + + private SoundManager soundManager; + + @Inject + public DisplayItemDropUseCase(SoundManager soundManager, ThreadExecutor threadExecutor, PostExecutionThread postExecutionThread) { + super(threadExecutor, postExecutionThread); + this.soundManager = soundManager; + } + + @Override + protected Observable buildUseCaseObservable(RequestValues requestValues) { + return Observable.from(() -> { + TaskDirectionData data = requestValues.data; + + if (data.get_tmp() != null) { + if (data.get_tmp().getDrop() != null) { + new Handler().postDelayed(() -> { + showSnackbar(requestValues.context, requestValues.snackbarTargetView, + data.get_tmp().getDrop().getDialog(), UiUtils.SnackbarDisplayType.DROP); + soundManager.loadAndPlayAudio(SoundManager.SoundItemDrop); + }, 3000L); + + } + } + + return null; + }); + } + + public static final class RequestValues implements UseCase.RequestValues { + + private TaskDirectionData data; + private AppCompatActivity context; + private View snackbarTargetView; + + public RequestValues(TaskDirectionData data, AppCompatActivity context, View snackbarTargetView) { + this.data = data; + this.context = context; + this.snackbarTargetView = snackbarTargetView; + } + } +} \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/LevelUpUseCase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/LevelUpUseCase.java new file mode 100644 index 000000000..dacc46853 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/LevelUpUseCase.java @@ -0,0 +1,104 @@ +package com.habitrpg.android.habitica.interactors; + +import android.support.v7.app.AlertDialog; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.TextView; + +import com.habitrpg.android.habitica.R; +import com.habitrpg.android.habitica.events.ShareEvent; +import com.habitrpg.android.habitica.executors.PostExecutionThread; +import com.habitrpg.android.habitica.executors.ThreadExecutor; +import com.habitrpg.android.habitica.helpers.SoundManager; +import com.habitrpg.android.habitica.ui.AvatarView; +import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; +import com.magicmicky.habitrpgwrapper.lib.models.SuppressedModals; + +import org.greenrobot.eventbus.EventBus; + +import javax.inject.Inject; + +import rx.Observable; + +public class LevelUpUseCase extends UseCase { + + private SoundManager soundManager; + private CheckClassSelectionUseCase checkClassSelectionUseCase; + + @Inject + public LevelUpUseCase(SoundManager soundManager, ThreadExecutor threadExecutor, PostExecutionThread postExecutionThread, + CheckClassSelectionUseCase checkClassSelectionUseCase) { + super(threadExecutor, postExecutionThread); + this.soundManager = soundManager; + this.checkClassSelectionUseCase = checkClassSelectionUseCase; + } + + @Override + protected Observable buildUseCaseObservable(RequestValues requestValues) { + return Observable.from(() -> { + soundManager.loadAndPlayAudio(SoundManager.SoundLevelUp); + + + SuppressedModals suppressedModals = requestValues.user.getPreferences().getSuppressModals(); + if (suppressedModals != null) { + if (suppressedModals.getLevelUp()) { + checkClassSelectionUseCase.observable(new CheckClassSelectionUseCase.RequestValues(requestValues.user, null)) + .subscribe(aVoid -> { + }, throwable -> { + }); + + return null; + } + } + + View customView = requestValues.compatActivity.getLayoutInflater().inflate(R.layout.dialog_levelup, null); + if (customView != null) { + TextView detailView = (TextView) customView.findViewById(R.id.levelupDetail); + detailView.setText(requestValues.compatActivity.getString(R.string.levelup_detail, requestValues.newLevel)); + AvatarView dialogAvatarView = (AvatarView) customView.findViewById(R.id.avatarView); + dialogAvatarView.setUser(requestValues.user); + } + + final ShareEvent event = new ShareEvent(); + event.sharedMessage = requestValues.compatActivity.getString(R.string.share_levelup, requestValues.newLevel + "") + " https://habitica.com/social/level-up"; + AvatarView avatarView = new AvatarView(requestValues.compatActivity, true, true, true); + avatarView.setUser(requestValues.user); + avatarView.onAvatarImageReady(avatarImage -> event.shareImage = avatarImage); + + AlertDialog alert = new AlertDialog.Builder(requestValues.compatActivity) + .setTitle(R.string.levelup_header) + .setView(customView) + .setPositiveButton(R.string.levelup_button, (dialog, which) -> { + checkClassSelectionUseCase.observable(new CheckClassSelectionUseCase.RequestValues(requestValues.user, null)) + .subscribe(aVoid -> { + }, throwable -> { + }); + }) + .setNeutralButton(R.string.share, (dialog, which) -> { + EventBus.getDefault().post(event); + dialog.dismiss(); + }) + .create(); + + if (!requestValues.compatActivity.isFinishing()) { + alert.show(); + } + + return null; + + }); + } + + public static final class RequestValues implements UseCase.RequestValues { + private HabitRPGUser user; + private int newLevel; + private AppCompatActivity compatActivity; + + public RequestValues(HabitRPGUser user, int newLevel, AppCompatActivity compatActivity) { + + this.user = user; + this.newLevel = newLevel; + this.compatActivity = compatActivity; + } + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/NotifyUserUseCase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/NotifyUserUseCase.java new file mode 100644 index 000000000..72135ef9a --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/NotifyUserUseCase.java @@ -0,0 +1,112 @@ +package com.habitrpg.android.habitica.interactors; + +import android.support.v4.util.Pair; +import android.support.v7.app.AppCompatActivity; +import android.view.View; + +import com.habitrpg.android.habitica.executors.PostExecutionThread; +import com.habitrpg.android.habitica.executors.ThreadExecutor; +import com.habitrpg.android.habitica.ui.helpers.UiUtils; +import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; +import com.magicmicky.habitrpgwrapper.lib.models.Stats; + +import javax.inject.Inject; + +import rx.Observable; +import rx.functions.Action0; + +import static com.habitrpg.android.habitica.helpers.MathHelper.round; +import static com.habitrpg.android.habitica.ui.helpers.UiUtils.showSnackbar; + +public class NotifyUserUseCase extends UseCase { + + public static final int MIN_LEVEL_FOR_SKILLS = 11; + private LevelUpUseCase levelUpUseCase; + + @Inject + public NotifyUserUseCase(ThreadExecutor threadExecutor, PostExecutionThread postExecutionThread, + LevelUpUseCase levelUpUseCase) { + super(threadExecutor, postExecutionThread); + this.levelUpUseCase = levelUpUseCase; + } + + @Override + protected Observable buildUseCaseObservable(RequestValues r) { + return Observable.from(() -> { + Stats stats = r.user.getStats(); + + if (r.lvl > stats.getLvl()) { + levelUpUseCase.observable(new LevelUpUseCase.RequestValues(r.user, r.lvl, r.context)) + .subscribe(aVoid -> { + r.retrieveUser.call(); + stats.setLvl(r.lvl); + }, throwable -> { + }); + } else { + + Pair pair = getNotificationAndAddStatsToUser(r.user, r.xp, r.hp, r.gold, r.mp); + + showSnackbar(r.context, r.snackbarTargetView, pair.first, pair.second); + } + + return null; + }); + } + + public static Pair getNotificationAndAddStatsToUser(HabitRPGUser user, double xp, double hp, double gold, double mp){ + + StringBuilder message = new StringBuilder(); + Stats stats = user.getStats(); + UiUtils.SnackbarDisplayType displayType = UiUtils.SnackbarDisplayType.NORMAL; + + if (xp > stats.getExp()) { + message.append(" + ").append(round(xp - stats.getExp(), 2)).append(" XP"); + stats.setExp(xp); + } + if (hp != stats.getHp()) { + displayType = UiUtils.SnackbarDisplayType.FAILURE; + message.append(" - ").append(round(stats.getHp() - hp, 2)).append(" HP"); + stats.setHp(hp); + } + if (gold > stats.getGp()) { + message.append(" + ").append(round(gold - stats.getGp(), 2)).append(" GP"); + stats.setGp(gold); + } else if (gold < stats.getGp()) { + displayType = UiUtils.SnackbarDisplayType.FAILURE; + message.append(" - ").append(round(stats.getGp() - gold, 2)).append(" GP"); + stats.setGp(gold); + } + if (mp > stats.getMp() && stats.getLvl() >= MIN_LEVEL_FOR_SKILLS) { + message.append(" + ").append(round(mp - stats.getMp(), 2)).append(" MP"); + stats.setMp(mp); + } + + return new Pair<>(message.toString(), displayType); + } + + public static final class RequestValues implements UseCase.RequestValues { + + private AppCompatActivity context; + private View snackbarTargetView; + private Action0 retrieveUser; + private HabitRPGUser user; + private double xp; + private double hp; + private double gold; + private double mp; + private int lvl; + + public RequestValues(AppCompatActivity context, View snackbarTargetView, Action0 retrieveUser, + HabitRPGUser user, double xp, double hp, double gold, double mp, int lvl) { + this.context = context; + this.snackbarTargetView = snackbarTargetView; + this.retrieveUser = retrieveUser; + this.user = user; + this.xp = xp; + this.hp = hp; + this.gold = gold; + this.mp = mp; + this.lvl = lvl; + } + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java index a4dcd1452..b97641fba 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java @@ -12,9 +12,26 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; +import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TextView; +import com.habitrpg.android.habitica.events.HabitScoreEvent; +import com.habitrpg.android.habitica.events.TaskRemovedEvent; +import com.habitrpg.android.habitica.events.TaskUpdatedEvent; +import com.habitrpg.android.habitica.events.commands.BuyRewardCommand; +import com.habitrpg.android.habitica.events.commands.ChecklistCheckedCommand; +import com.habitrpg.android.habitica.events.commands.TaskCheckedCommand; +import com.habitrpg.android.habitica.helpers.SoundManager; +import com.habitrpg.android.habitica.interactors.BuyRewardUseCase; +import com.habitrpg.android.habitica.interactors.CheckClassSelectionUseCase; +import com.habitrpg.android.habitica.interactors.ChecklistCheckUseCase; +import com.habitrpg.android.habitica.interactors.DailyCheckUseCase; +import com.habitrpg.android.habitica.interactors.DisplayItemDropUseCase; +import com.habitrpg.android.habitica.interactors.HabitScoreUseCase; +import com.habitrpg.android.habitica.interactors.NotifyUserUseCase; +import com.habitrpg.android.habitica.interactors.TodoCheckUseCase; +import com.habitrpg.android.habitica.ui.helpers.UiUtils; import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.R; @@ -23,6 +40,9 @@ import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallegeDeta import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallengeTasksRecyclerViewFragment; import com.habitrpg.android.habitica.ui.helpers.MarkdownParser; import com.magicmicky.habitrpgwrapper.lib.models.Challenge; +import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; +import com.magicmicky.habitrpgwrapper.lib.models.Stats; +import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; import com.raizlabs.android.dbflow.sql.builder.Condition; import com.raizlabs.android.dbflow.sql.language.Select; @@ -30,6 +50,9 @@ import com.raizlabs.android.dbflow.sql.language.Select; import net.pherth.android.emoji_library.EmojiParser; import net.pherth.android.emoji_library.EmojiTextView; +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; + import java.util.ArrayList; import java.util.Map; @@ -39,6 +62,8 @@ import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; +import static com.habitrpg.android.habitica.ui.helpers.UiUtils.showSnackbar; + public class ChallengeDetailActivity extends BaseActivity { public static String CHALLENGE_ID = "CHALLENGE_ID"; @@ -52,6 +77,34 @@ public class ChallengeDetailActivity extends BaseActivity { @Inject public IApiClient apiClient; + @BindView(R.id.floating_menu_wrapper) + FrameLayout floatingMenuWrapper; + + // region UseCases + + @Inject + HabitScoreUseCase habitScoreUseCase; + + @Inject + DailyCheckUseCase dailyCheckUseCase; + + @Inject + TodoCheckUseCase todoCheckUseCase; + + @Inject + BuyRewardUseCase buyRewardUseCase; + + @Inject + ChecklistCheckUseCase checklistCheckUseCase; + + @Inject + DisplayItemDropUseCase displayItemDropUseCase; + + @Inject + NotifyUserUseCase notifyUserUseCase; + + // endregion + private ChallengeViewHolder challengeViewHolder; private Challenge challenge; @@ -88,7 +141,6 @@ public class ChallengeDetailActivity extends BaseActivity { .subscribe(taskList -> { ArrayList resultList = new ArrayList<>(); - ArrayList todos = new ArrayList<>(); ArrayList habits = new ArrayList<>(); ArrayList dailies = new ArrayList<>(); @@ -275,4 +327,86 @@ public class ChallengeDetailActivity extends BaseActivity { public void onBackPressed() { finish(); } + + + + @Subscribe + public void onEvent(TaskCheckedCommand event) { + switch (event.Task.type) { + case Task.TYPE_DAILY: { + dailyCheckUseCase.observable(new DailyCheckUseCase.RequestValues(event.Task, !event.Task.getCompleted())) + .subscribe(res -> { + EventBus.getDefault().post(new TaskUpdatedEvent(event.Task)); + }, error -> { + }); + } + break; + case Task.TYPE_TODO: { + todoCheckUseCase.observable(new TodoCheckUseCase.RequestValues(event.Task, !event.Task.getCompleted())) + .subscribe(res -> { + EventBus.getDefault().post(new TaskUpdatedEvent(event.Task)); + }, error -> { + }); + } + break; + } + } + + @Subscribe + public void onEvent(ChecklistCheckedCommand event) { + checklistCheckUseCase.observable(new ChecklistCheckUseCase.RequestValues(event.task.getId(), event.item.getId())) + .subscribe(res -> { + EventBus.getDefault().post(new TaskUpdatedEvent(event.task)); + }, error -> { + }); + } + + @Subscribe + public void onEvent(HabitScoreEvent event) { + habitScoreUseCase.observable(new HabitScoreUseCase.RequestValues(event.habit, event.Up)) + .subscribe(res -> { + onTaskDataReceived(res, event.habit); + }, error -> { + }); + } + + @Subscribe + public void onEvent(final BuyRewardCommand event) { + final String rewardKey = event.Reward.getId(); + + if (HabiticaApplication.User.getStats().getGp() < event.Reward.getValue()) { + showSnackbar(this, floatingMenuWrapper, getString(R.string.no_gold), UiUtils.SnackbarDisplayType.FAILURE); + return; + } + + + if (event.Reward.specialTag == null || !event.Reward.specialTag.equals("item")) { + + buyRewardUseCase.observable(new BuyRewardUseCase.RequestValues(event.Reward)) + .subscribe(res -> { + onTaskDataReceived(res, event.Reward); + }, error -> {}); + } + + } + + public void onTaskDataReceived(TaskDirectionData data, Task task) { + if (task.type.equals("reward")) { + + showSnackbar(this, floatingMenuWrapper, getString(R.string.notification_purchase, task.getText()), UiUtils.SnackbarDisplayType.NORMAL); + + } else { + + if (HabiticaApplication.User != null) { + notifyUserUseCase.observable(new NotifyUserUseCase.RequestValues(this, floatingMenuWrapper, () -> { + // retrieveUser? forward message to MainActivity ? or mark it to refresh ? + }, + HabiticaApplication.User, data.getExp(), data.getHp(), data.getGp(), data.getMp(), data.getLvl())); + } + + displayItemDropUseCase.observable(new DisplayItemDropUseCase.RequestValues(data, this, floatingMenuWrapper)) + .subscribe(aVoid -> {}, throwable -> {}); + } + } + } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java index d78c87827..f2c71a9f4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java @@ -2,8 +2,11 @@ package com.habitrpg.android.habitica.ui.activities; import com.facebook.drawee.view.SimpleDraweeView; import com.habitrpg.android.habitica.interactors.BuyRewardUseCase; +import com.habitrpg.android.habitica.interactors.CheckClassSelectionUseCase; import com.habitrpg.android.habitica.interactors.ChecklistCheckUseCase; import com.habitrpg.android.habitica.interactors.DailyCheckUseCase; +import com.habitrpg.android.habitica.interactors.DisplayItemDropUseCase; +import com.habitrpg.android.habitica.interactors.NotifyUserUseCase; import com.habitrpg.android.habitica.interactors.TodoCheckUseCase; import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HabiticaApplication; @@ -162,6 +165,7 @@ import retrofit2.adapter.rxjava.HttpException; import rx.Observable; import rx.functions.Action1; +import static com.habitrpg.android.habitica.interactors.NotifyUserUseCase.MIN_LEVEL_FOR_SKILLS; import static com.habitrpg.android.habitica.ui.helpers.UiUtils.SnackbarDisplayType; import static com.habitrpg.android.habitica.ui.helpers.UiUtils.showSnackbar; @@ -170,12 +174,12 @@ public class MainActivity extends BaseActivity implements Action1, Ha public static final int SELECT_CLASS_RESULT = 11; public static final int GEM_PURCHASE_REQUEST = 111; - public static final int MIN_LEVEL_FOR_SKILLS = 11; @Inject public IApiClient apiClient; @Inject public SoundManager soundManager; + @Inject public MaintenanceApiService maintenanceService; public HabitRPGUser user; @@ -197,6 +201,8 @@ public class MainActivity extends BaseActivity implements Action1, Ha @BindView(R.id.overlayFrameLayout) FrameLayout overlayFrameLayout; + // region UseCases + @Inject HabitScoreUseCase habitScoreUseCase; @@ -212,6 +218,17 @@ public class MainActivity extends BaseActivity implements Action1, Ha @Inject ChecklistCheckUseCase checklistCheckUseCase; + @Inject + CheckClassSelectionUseCase checkClassSelectionUseCase; + + @Inject + DisplayItemDropUseCase displayItemDropUseCase; + + @Inject + NotifyUserUseCase notifyUserUseCase; + + // endregion + private Drawer drawer; private Drawer filterDrawer; private AccountHeader accountHeader; @@ -244,9 +261,6 @@ public class MainActivity extends BaseActivity implements Action1, Ha } }; - static public Double round(Double value, int n) { - return (Math.round(value * Math.pow(10, n))) / (Math.pow(10, n)); - } PushNotificationManager pushNotificationManager; @@ -312,9 +326,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha //resync, if last sync was more than 10 minutes ago if (this.lastSync == null || (new Date().getTime() - this.lastSync.getTime()) > 180000) { if (this.apiClient != null && this.apiClient.hasAuthenticationKeys()) { - this.apiClient.retrieveUser(true) - .subscribe(new HabitRPGUserCallback(this), throwable -> { - }); + retrieveUser(); this.checkMaintenance(); } } @@ -412,7 +424,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha } } - private void setUserData(boolean fromLocalDb) { + protected void setUserData(boolean fromLocalDb) { if (user != null) { Preferences preferences = user.getPreferences(); @@ -1083,7 +1095,8 @@ public class MainActivity extends BaseActivity implements Action1, Ha buyRewardUseCase.observable(new BuyRewardUseCase.RequestValues(event.Reward)) .subscribe(res -> { onTaskDataReceived(res, event.Reward); - }, error -> {}); + }, error -> { + }); } //Update the users gold @@ -1238,65 +1251,15 @@ public class MainActivity extends BaseActivity implements Action1, Ha } else { if (user != null) { - notifyUser(data.getExp(), data.getHp(), data.getGp(), data.getMp(), data.getLvl()); + notifyUserUseCase.observable(new NotifyUserUseCase.RequestValues(this, floatingMenuWrapper, this::retrieveUser, + user, data.getExp(), data.getHp(), data.getGp(), data.getMp(), data.getLvl())); } - showSnackBarForDataReceived(data); + displayItemDropUseCase.observable(new DisplayItemDropUseCase.RequestValues(data, this, floatingMenuWrapper)) + .subscribe(aVoid -> {}, throwable -> {}); } } - private void showSnackBarForDataReceived(final TaskDirectionData data) { - if (data.get_tmp() != null) { - if (data.get_tmp().getDrop() != null) { - new Handler().postDelayed(() -> { - showSnackbar(MainActivity.this, floatingMenuWrapper, data.get_tmp().getDrop().getDialog(), SnackbarDisplayType.DROP); - soundManager.loadAndPlayAudio(SoundManager.SoundItemDrop); - }, 3000L); - } - } - } - - private void notifyUser(double xp, double hp, double gold, double mp, int lvl) { - StringBuilder message = new StringBuilder(); - SnackbarDisplayType displayType = SnackbarDisplayType.NORMAL; - if (lvl > user.getStats().getLvl()) { - displayLevelUpDialog(lvl); - - this.apiClient.retrieveUser(true) - - .subscribe(new HabitRPGUserCallback(this), throwable -> { - }); - user.getStats().setLvl(lvl); - - showSnackbar(this, floatingMenuWrapper, message.toString(), SnackbarDisplayType.NORMAL); - } else { - com.magicmicky.habitrpgwrapper.lib.models.Stats stats = user.getStats(); - - if (xp > stats.getExp()) { - message.append(" + ").append(round(xp - stats.getExp(), 2)).append(" XP"); - user.getStats().setExp(xp); - } - if (hp != stats.getHp()) { - displayType = SnackbarDisplayType.FAILURE; - message.append(" - ").append(round(stats.getHp() - hp, 2)).append(" HP"); - user.getStats().setHp(hp); - } - if (gold > stats.getGp()) { - message.append(" + ").append(round(gold - stats.getGp(), 2)).append(" GP"); - stats.setGp(gold); - } else if (gold < stats.getGp()) { - displayType = SnackbarDisplayType.FAILURE; - message.append(" - ").append(round(stats.getGp() - gold, 2)).append(" GP"); - stats.setGp(gold); - } - if (mp > stats.getMp() && stats.getLvl() >= MIN_LEVEL_FOR_SKILLS) { - message.append(" + ").append(round(mp - stats.getMp(), 2)).append(" MP"); - stats.setMp(mp); - } - showSnackbar(this, floatingMenuWrapper, message.toString(), displayType); - } - setUserData(true); - } private void displayDeathDialogIfNeeded() { @@ -1335,57 +1298,6 @@ public class MainActivity extends BaseActivity implements Action1, Ha } } - private void displayLevelUpDialog(int level) { - soundManager.loadAndPlayAudio(SoundManager.SoundLevelUp); - - SuppressedModals suppressedModals = user.getPreferences().getSuppressModals(); - if (suppressedModals != null) { - if (suppressedModals.getLevelUp()) { - checkClassSelection(); - return; - } - } - - View customView = getLayoutInflater().inflate(R.layout.dialog_levelup, null); - if (customView != null) { - TextView detailView = (TextView) customView.findViewById(R.id.levelupDetail); - detailView.setText(this.getString(R.string.levelup_detail, level)); - dialogAvatarView = (AvatarView) customView.findViewById(R.id.avatarView); - dialogAvatarView.setUser(user); - } - - final ShareEvent event = new ShareEvent(); - event.sharedMessage = getString(R.string.share_levelup, level) + " https://habitica.com/social/level-up"; - AvatarView avatarView = new AvatarView(this, true, true, true); - avatarView.setUser(user); - avatarView.onAvatarImageReady(avatarImage -> event.shareImage = avatarImage); - - AlertDialog alert = new AlertDialog.Builder(this) - .setTitle(R.string.levelup_header) - .setView(customView) - .setPositiveButton(R.string.levelup_button, (dialog, which) -> { - checkClassSelection(); - }) - .setNeutralButton(R.string.share, (dialog, which) -> { - EventBus.getDefault().post(event); - dialog.dismiss(); - }) - .create(); - if (!this.isFinishing()) { - alert.show(); - } - } - - private void checkClassSelection() { - if (user.getStats().getLvl() > 10 && - !user.getPreferences().getDisableClasses() && - !user.getFlags().getClassSelected()) { - SelectClassEvent event = new SelectClassEvent(); - event.isInitialSelection = true; - event.currentClass = user.getStats().get_class().toString(); - displayClassSelectionActivity(event); - } - } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { @@ -1401,23 +1313,18 @@ public class MainActivity extends BaseActivity implements Action1, Ha return floatingMenuWrapper; } + protected void retrieveUser() { + this.apiClient.retrieveUser(true) + .subscribe(new HabitRPGUserCallback(this), throwable -> { + }); + } + @Subscribe public void displayClassSelectionActivity(SelectClassEvent event) { - Bundle bundle = new Bundle(); - bundle.putString("size", user.getPreferences().getSize()); - bundle.putString("skin", user.getPreferences().getSkin()); - bundle.putString("shirt", user.getPreferences().getShirt()); - bundle.putInt("hairBangs", user.getPreferences().getHair().getBangs()); - bundle.putInt("hairBase", user.getPreferences().getHair().getBase()); - bundle.putString("hairColor", user.getPreferences().getHair().getColor()); - bundle.putInt("hairMustache", user.getPreferences().getHair().getMustache()); - bundle.putInt("hairBeard", user.getPreferences().getHair().getBeard()); - bundle.putBoolean("isInitialSelection", event.isInitialSelection); - bundle.putString("currentClass", event.currentClass); - - Intent intent = new Intent(this, ClassSelectionActivity.class); - intent.putExtras(bundle); - startActivityForResult(intent, SELECT_CLASS_RESULT); + checkClassSelectionUseCase.observable(new CheckClassSelectionUseCase.RequestValues(user, event)) + .subscribe(aVoid -> { + }, throwable -> { + }); } private void displayTutorialStep(TutorialStep step, String text) { @@ -1506,7 +1413,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha case Task.TYPE_TODO: { todoCheckUseCase.observable(new TodoCheckUseCase.RequestValues(event.Task, !event.Task.getCompleted())) .subscribe(res -> { - EventBus.getDefault().post(new TaskUpdatedEvent(event.Task)); + EventBus.getDefault().post(new TaskUpdatedEvent(event.Task)); }, error -> { }); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.java index abe66276c..dfc1abcaf 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.java @@ -37,6 +37,8 @@ import java.util.List; import butterknife.BindView; import rx.Observable; +import static com.habitrpg.android.habitica.helpers.MathHelper.round; + public class SkillsFragment extends BaseMainFragment { private final int TASK_SELECTION_ACTIVITY = 10; @@ -231,11 +233,6 @@ public class SkillsFragment extends BaseMainFragment { } } - static public Double round(Double value, int n) { - return (Math.round(value * Math.pow(10, n))) / (Math.pow(10, n)); - } - - @Override public String customTitle() { return getString(R.string.sidebar_skills); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java index ff32f17d7..157187e39 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java @@ -205,7 +205,7 @@ public class ChallengeTasksRecyclerViewFragment extends BaseFragment { break; } - viewHolder.setDisabled(true); + //viewHolder.setDisabled(true); return viewHolder; } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/BaseWidgetProvider.java b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/BaseWidgetProvider.java index d0997eca8..9abea0f6a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/BaseWidgetProvider.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/BaseWidgetProvider.java @@ -6,19 +6,21 @@ import android.appwidget.AppWidgetProvider; import android.content.Context; import android.os.Build; import android.os.Bundle; -import android.view.View; +import android.support.v4.util.Pair; import android.widget.RemoteViews; import android.widget.Toast; -import com.habitrpg.android.habitica.R; +import com.habitrpg.android.habitica.interactors.NotifyUserUseCase; +import com.habitrpg.android.habitica.ui.helpers.UiUtils; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; import com.magicmicky.habitrpgwrapper.lib.models.Stats; import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; import com.raizlabs.android.dbflow.sql.builder.Condition; import com.raizlabs.android.dbflow.sql.language.Select; -import static com.habitrpg.android.habitica.ui.activities.MainActivity.MIN_LEVEL_FOR_SKILLS; -import static com.habitrpg.android.habitica.ui.activities.MainActivity.round; +import static com.habitrpg.android.habitica.helpers.MathHelper.round; +import static com.habitrpg.android.habitica.interactors.NotifyUserUseCase.MIN_LEVEL_FOR_SKILLS; + public abstract class BaseWidgetProvider extends AppWidgetProvider { @@ -69,31 +71,13 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider { return configureRemoteViews(remoteViews, widgetId, columns, rows); } - protected void showToastForTaskDirection(Context context, TaskDirectionData taskDirectionData, String userID) { + protected void showToastForTaskDirection(Context context, TaskDirectionData data, String userID) { HabitRPGUser user = new Select().from(HabitRPGUser.class).where(Condition.column("id").eq(userID)).querySingle(); - Stats stats = user.getStats(); - StringBuilder message = new StringBuilder(); - if (taskDirectionData.exp > stats.getExp()) { - message.append(" + ").append(round(taskDirectionData.exp - stats.getExp(), 2)).append(" XP"); - user.getStats().setExp(taskDirectionData.exp); - } - if (taskDirectionData.hp < stats.getHp()) { - message.append(" - ").append(round(stats.getHp() - taskDirectionData.hp, 2)).append(" HP"); - user.getStats().setHp(taskDirectionData.hp); - } - if (taskDirectionData.gp > stats.getGp()) { - message.append(" + ").append(round(taskDirectionData.gp - stats.getGp(), 2)).append(" GP"); - user.getStats().setGp(taskDirectionData.gp); - } else if (taskDirectionData.gp < stats.getGp()) { - message.append(" - ").append(round(stats.getGp() - taskDirectionData.gp, 2)).append(" GP"); - stats.setGp(taskDirectionData.gp); - } - if (taskDirectionData.mp > stats.getMp() && stats.getLvl() >= MIN_LEVEL_FOR_SKILLS) { - message.append(" + ").append(round(taskDirectionData.mp - stats.getMp(), 2)).append(" MP"); - user.getStats().setMp(taskDirectionData.mp); - } + + Pair pair = NotifyUserUseCase.getNotificationAndAddStatsToUser(user, data.exp, data.hp, data.getGp(), data.mp); + user.save(); - Toast toast = Toast.makeText(context, message, Toast.LENGTH_LONG); + Toast toast = Toast.makeText(context, pair.first, Toast.LENGTH_LONG); toast.show(); } diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java index bc12b19d4..5641255f8 100644 --- a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java +++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java @@ -100,9 +100,6 @@ public interface ApiService { @GET("tasks/user") Observable> getTasks(); - @GET("tasks/user") - Observable>> getUserTasks(); - @POST("user/unlock") Observable> unlockPath(@Query("path") String path); From 1087c31a3137237287638e58f215a39cd7aa07d0 Mon Sep 17 00:00:00 2001 From: Negue Date: Thu, 9 Feb 2017 19:55:20 +0100 Subject: [PATCH 06/34] fix prior merge weirdness --- .../habitrpg/android/habitica/ApiClient.java | 47 +++++----- .../habitica/HabiticaBaseApplication.java | 21 +---- .../habitica/HabiticaPurchaseVerifier.java | 23 +---- .../helpers/PopupNotificationsManager.java | 4 +- .../PushNotificationManager.java | 1 + .../android/habitica/modules/ApiModule.java | 4 +- .../LocalNotificationActionReceiver.java | 8 +- .../activities/ChallengeDetailActivity.java | 76 ++------------- .../habitica/ui/activities/LoginActivity.java | 50 +--------- .../habitica/ui/activities/MainActivity.java | 93 +++++++++---------- .../ui/activities/PartyInviteActivity.java | 2 + .../ui/activities/SkillMemberActivity.java | 3 - .../ui/fragments/BaseMainFragment.java | 8 -- .../ui/fragments/SubscriptionFragment.java | 30 +++--- .../widget/AvatarStatsWidgetProvider.java | 5 +- .../habitrpgwrapper/lib/api/ApiService.java | 2 +- .../habitrpgwrapper/lib/api/IApiClient.java | 9 +- 17 files changed, 108 insertions(+), 278 deletions(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ApiClient.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ApiClient.java index 87634ab26..666ad9e55 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ApiClient.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ApiClient.java @@ -10,7 +10,6 @@ import com.amplitude.api.Amplitude; import com.habitrpg.android.habitica.database.CheckListItemExcludeStrategy; import com.habitrpg.android.habitica.helpers.PopupNotificationsManager; import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy; -import com.habitrpg.android.habitica.helpers.PopupNotificationsManager; import com.magicmicky.habitrpgwrapper.lib.api.ApiService; import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.magicmicky.habitrpgwrapper.lib.api.Server; @@ -29,6 +28,7 @@ import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationResult; import com.magicmicky.habitrpgwrapper.lib.models.Quest; import com.magicmicky.habitrpgwrapper.lib.models.Shop; import com.magicmicky.habitrpgwrapper.lib.models.Status; +import com.magicmicky.habitrpgwrapper.lib.models.SubscriptionValidationRequest; import com.magicmicky.habitrpgwrapper.lib.models.Tag; import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; import com.magicmicky.habitrpgwrapper.lib.models.responses.BuyResponse; @@ -97,7 +97,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import javax.inject.Inject; import javax.net.ssl.SSLException; import okhttp3.OkHttpClient; @@ -113,12 +112,16 @@ import rx.Observable; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Action1; import rx.functions.Func1; -import rx.functions.Func2; import rx.schedulers.Schedulers; public class ApiClient implements Action1, IApiClient { + private final GsonConverterFactory gsonConverter; + private final HostConfig hostConfig; + private final Retrofit retrofitAdapter; + CrashlyticsProxy crashlyticsProxy; + Context context; // I think we don't need the ApiClient anymore we could just use ApiService private final ApiService apiService; @@ -129,7 +132,7 @@ public class ApiClient implements Action1, IApiClient { @Override public Object call(HabitResponse habitResponse) { if (habitResponse.notifications != null) { - PopupNotificationsManager popupNotificationsManager = PopupNotificationsManager.getInstance(ApiClient.this); + PopupNotificationsManager popupNotificationsManager = PopupNotificationsManager.getInstance(ApiClient.this, context); popupNotificationsManager.showNotificationDialog(habitResponse.notifications); } return habitResponse.getData(); @@ -139,12 +142,15 @@ public class ApiClient implements Action1, IApiClient { .observeOn(AndroidSchedulers.mainThread()) .doOnError(this); private AlertDialog displayedAlert; + private String languageCode; //private OnHabitsAPIResult mResultListener; //private HostConfig mConfig; - public ApiClient(GsonConverterFactory gsonConverter, HostConfig hostConfig, CrashlyticsProxy crashlyticsProxy) { + public ApiClient(GsonConverterFactory gsonConverter, HostConfig hostConfig, CrashlyticsProxy crashlyticsProxy, Context context) { this.gsonConverter = gsonConverter; this.hostConfig = hostConfig; + this.context = context; + HabiticaBaseApplication.getComponent().inject(this); crashlyticsProxy.setUserIdentifier(this.hostConfig.getUser()); crashlyticsProxy.setUserName(this.hostConfig.getUser()); @@ -491,6 +497,11 @@ public class ApiClient implements Action1, IApiClient { return apiService.purchaseItem(type, itemKey).compose(configureApiCallObserver()); } + @Override + public Observable validateSubscription(SubscriptionValidationRequest request){ + return apiService.validateSubscription(request).compose(configureApiCallObserver()); + } + @Override public Observable purchaseHourglassItem(String type, String itemKey) { @@ -588,22 +599,7 @@ public class ApiClient implements Action1, IApiClient { } @Override - public Observable registerUser(UserAuth auth) { - return apiService.registerUser(auth).compose(configureApiCallObserver()); - } - - @Override - public Observable connectLocal(UserAuth auth) { - return apiService.connectLocal(auth).compose(configureApiCallObserver()); - } - - @Override - public Observable connectSocial(UserAuthSocial auth) { - return apiService.connectSocial(auth).compose(configureApiCallObserver()); - } - - @Override - public Observable sleep() { + public Observable sleep() { return apiService.sleep().compose(configureApiCallObserver()); } @@ -824,7 +820,7 @@ public class ApiClient implements Action1, IApiClient { @Override public Observable readNotificaiton(String notificationId) { - return apiService.readNotificaiton(notificationId).compose(configureApiCallObserver()); + return apiService.readNotification(notificationId).compose(configureApiCallObserver()); } public static class ErrorResponse { @@ -834,4 +830,11 @@ public class ApiClient implements Action1, IApiClient { public ObservablegetContent() { return apiService.getContent(languageCode).compose(configureApiCallObserver()); } + + + @Override + public Observable openMysteryItem() { + return apiService.openMysteryItem().compose(configureApiCallObserver()); + } + } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.java b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.java index 28065e191..7bba511c4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.java @@ -1,22 +1,5 @@ package com.habitrpg.android.habitica; -import com.amplitude.api.Amplitude; -import com.facebook.FacebookSdk; -import com.facebook.drawee.backends.pipeline.Fresco; -import com.habitrpg.android.habitica.components.AppComponent; -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.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; -import com.raizlabs.android.dbflow.config.FlowManager; -import com.squareup.leakcanary.LeakCanary; -import com.squareup.leakcanary.RefWatcher; - -import org.solovyev.android.checkout.Billing; -import org.solovyev.android.checkout.Cache; -import org.solovyev.android.checkout.Checkout; -import org.solovyev.android.checkout.PurchaseVerifier; - import android.app.Activity; import android.content.Context; import android.content.Intent; @@ -38,7 +21,6 @@ import com.amplitude.api.Amplitude; import com.facebook.FacebookSdk; import com.facebook.drawee.backends.pipeline.Fresco; import com.habitrpg.android.habitica.components.AppComponent; -import com.habitrpg.android.habitica.helpers.PurchaseTypes; import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy; import com.habitrpg.android.habitica.ui.activities.IntroActivity; import com.habitrpg.android.habitica.ui.activities.LoginActivity; @@ -46,12 +28,11 @@ import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; import com.raizlabs.android.dbflow.config.FlowManager; import com.squareup.leakcanary.LeakCanary; +import com.squareup.leakcanary.RefWatcher; import org.solovyev.android.checkout.Billing; import org.solovyev.android.checkout.Cache; import org.solovyev.android.checkout.Checkout; -import org.solovyev.android.checkout.ProductTypes; -import org.solovyev.android.checkout.Products; import org.solovyev.android.checkout.PurchaseVerifier; import java.io.File; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.java b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.java index 277628909..b02497cdb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.java @@ -58,31 +58,12 @@ public class HabiticaPurchaseVerifier extends BasePurchaseVerifier { validationRequest.transaction = new Transaction(); validationRequest.transaction.receipt = purchase.data; validationRequest.transaction.signature = purchase.signature; - apiHelper.apiService.validatePurchase(validationRequest).subscribe(purchaseValidationResult -> { - purchasedOrderList.add(purchase.orderId); apiClient.validatePurchase(validationRequest).subscribe(purchaseValidationResult -> { purchasedOrderList.add(purchase.orderId); requestListener.onSuccess(verifiedPurchases); - //TODO: find way to get $ price automatically. - if (purchase.sku.equals(PurchaseTypes.Purchase4Gems)) { - Seeds.sharedInstance().recordIAPEvent(purchase.sku, 0.99); - } else if (purchase.sku.equals(PurchaseTypes.Purchase21Gems)) { - Seeds.sharedInstance().recordIAPEvent(purchase.sku, 4.99); - } else if (purchase.sku.equals(PurchaseTypes.Purchase42Gems)) { - Seeds.sharedInstance().recordIAPEvent(purchase.sku, 9.99); - } else if (purchase.sku.equals(PurchaseTypes.Purchase84Gems)) { - Seeds.sharedInstance().recordSeedsIAPEvent(purchase.sku, 19.99); - } - }, throwable -> { - if (throwable.getClass().equals(HttpException.class)) { - HttpException error = (HttpException) throwable; - APIHelper.ErrorResponse res = apiHelper.getErrorResponse((HttpException) throwable); - if (error.code() == 401) { - if (res.message.equals("RECEIPT_ALREADY_USED")) { - purchasedOrderList.add(purchase.orderId); //TODO: find way to get $ price automatically. if (purchase.sku.equals(PurchaseTypes.Purchase4Gems)) { @@ -115,7 +96,7 @@ public class HabiticaPurchaseVerifier extends BasePurchaseVerifier { validationRequest.transaction.receipt = purchase.data; validationRequest.transaction.signature = purchase.signature; validationRequest.sku = purchase.sku; - apiHelper.apiService.validateSubscription(validationRequest).subscribe(purchaseValidationResult -> { + apiClient.validateSubscription(validationRequest).subscribe(purchaseValidationResult -> { purchasedOrderList.add(purchase.orderId); verifiedPurchases.add(purchase); @@ -126,7 +107,7 @@ public class HabiticaPurchaseVerifier extends BasePurchaseVerifier { }, throwable -> { if (throwable.getClass().equals(HttpException.class)) { HttpException error = (HttpException) throwable; - APIHelper.ErrorResponse res = apiHelper.getErrorResponse((HttpException) throwable); + ApiClient.ErrorResponse res = apiClient.getErrorResponse((HttpException) throwable); if (error.code() == 401) { if (res.message.equals("RECEIPT_ALREADY_USED")) { purchasedOrderList.add(purchase.orderId); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManager.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManager.java index 25975b385..3a73bf489 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManager.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManager.java @@ -37,13 +37,13 @@ public class PopupNotificationsManager { // @TODO: A queue for displaying alert dialogues - private PopupNotificationsManager(IApiClient apiClient) { + private PopupNotificationsManager(IApiClient apiClient, Context context) { this.apiClient = apiClient; this.seenNotifications = new HashMap<>(); this.context = context.getApplicationContext(); } - public static PopupNotificationsManager getInstance(IApiClient apiHelper) { + public static PopupNotificationsManager getInstance(IApiClient apiHelper, Context context) { if (instance == null) { instance = new PopupNotificationsManager(apiHelper, context); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java index 8ee3f8ccb..6fe5b628b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java @@ -6,6 +6,7 @@ import android.preference.PreferenceManager; import com.google.firebase.iid.FirebaseInstanceId; import com.google.firebase.messaging.RemoteMessage; +import com.habitrpg.android.habitica.HabiticaBaseApplication; import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HabiticaApplication; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/ApiModule.java b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/ApiModule.java index 65fe94ad8..ccf00f303 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/ApiModule.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/ApiModule.java @@ -34,8 +34,8 @@ public class ApiModule { @Provides @Singleton - public IApiClient providesApiHelper(GsonConverterFactory gsonConverter, HostConfig hostConfig, CrashlyticsProxy crashlyticsProxy) { - return new ApiClient(gsonConverter, hostConfig, crashlyticsProxy); + public IApiClient providesApiHelper(GsonConverterFactory gsonConverter, HostConfig hostConfig, CrashlyticsProxy crashlyticsProxy, Context context) { + return new ApiClient(gsonConverter, hostConfig, crashlyticsProxy, context); } @Provides diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/LocalNotificationActionReceiver.java b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/LocalNotificationActionReceiver.java index 4e0ec6937..a0736cff4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/LocalNotificationActionReceiver.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/LocalNotificationActionReceiver.java @@ -1,11 +1,5 @@ package com.habitrpg.android.habitica.receivers; -import com.habitrpg.android.habitica.APIHelper; -import com.habitrpg.android.habitica.HabiticaApplication; -import com.habitrpg.android.habitica.R; -import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback; -import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; - import android.app.NotificationManager; import android.content.BroadcastReceiver; import android.content.Context; @@ -13,10 +7,10 @@ import android.content.Intent; import android.content.res.Resources; import android.os.Bundle; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; import javax.inject.Inject; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java index a28142d97..4425869b8 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java @@ -1,20 +1,5 @@ package com.habitrpg.android.habitica.ui.activities; -import com.habitrpg.android.habitica.APIHelper; -import com.habitrpg.android.habitica.HabiticaApplication; -import com.habitrpg.android.habitica.R; -import com.habitrpg.android.habitica.components.AppComponent; -import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallegeDetailDialogHolder; -import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallengeTasksRecyclerViewFragment; -import com.habitrpg.android.habitica.ui.helpers.MarkdownParser; -import com.magicmicky.habitrpgwrapper.lib.models.Challenge; -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 net.pherth.android.emoji_library.EmojiParser; -import net.pherth.android.emoji_library.EmojiTextView; - import android.app.AlertDialog; import android.databinding.ObservableArrayList; import android.databinding.ObservableList; @@ -31,32 +16,27 @@ import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TextView; +import com.habitrpg.android.habitica.HabiticaApplication; +import com.habitrpg.android.habitica.R; +import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.events.HabitScoreEvent; -import com.habitrpg.android.habitica.events.TaskRemovedEvent; import com.habitrpg.android.habitica.events.TaskUpdatedEvent; import com.habitrpg.android.habitica.events.commands.BuyRewardCommand; import com.habitrpg.android.habitica.events.commands.ChecklistCheckedCommand; import com.habitrpg.android.habitica.events.commands.TaskCheckedCommand; -import com.habitrpg.android.habitica.helpers.SoundManager; import com.habitrpg.android.habitica.interactors.BuyRewardUseCase; -import com.habitrpg.android.habitica.interactors.CheckClassSelectionUseCase; import com.habitrpg.android.habitica.interactors.ChecklistCheckUseCase; import com.habitrpg.android.habitica.interactors.DailyCheckUseCase; import com.habitrpg.android.habitica.interactors.DisplayItemDropUseCase; import com.habitrpg.android.habitica.interactors.HabitScoreUseCase; import com.habitrpg.android.habitica.interactors.NotifyUserUseCase; import com.habitrpg.android.habitica.interactors.TodoCheckUseCase; -import com.habitrpg.android.habitica.ui.helpers.UiUtils; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; -import com.habitrpg.android.habitica.HabiticaApplication; -import com.habitrpg.android.habitica.R; -import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallegeDetailDialogHolder; import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallengeTasksRecyclerViewFragment; import com.habitrpg.android.habitica.ui.helpers.MarkdownParser; +import com.habitrpg.android.habitica.ui.helpers.UiUtils; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.magicmicky.habitrpgwrapper.lib.models.Challenge; -import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; -import com.magicmicky.habitrpgwrapper.lib.models.Stats; import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; import com.raizlabs.android.dbflow.sql.builder.Condition; @@ -82,8 +62,7 @@ import static com.habitrpg.android.habitica.ui.helpers.UiUtils.showSnackbar; public class ChallengeDetailActivity extends BaseActivity { public static String CHALLENGE_ID = "CHALLENGE_ID"; - @Inject - public APIHelper apiHelper; + @BindView(R.id.detail_tabs) TabLayout detail_tabs; @BindView(R.id.toolbar) @@ -250,36 +229,6 @@ public class ChallengeDetailActivity extends BaseActivity { component.inject(this); } - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.action_leave: - new AlertDialog.Builder(this) - .setTitle(this.getString(R.string.challenge_leave_title)) - .setMessage(String.format(this.getString(R.string.challenge_leave_text), challenge.name)) - .setPositiveButton(this.getString(R.string.yes), (dialog, which) -> { - this.apiHelper.apiService.leaveChallenge(challenge.id) - .compose(apiHelper.configureApiCallObserver()) - .subscribe(aVoid -> { - challenge.user_id = null; - challenge.async().save(); - - HabiticaApplication.User.resetChallengeList(); - finish(); - - }, throwable -> { - }); - }) - .setNegativeButton(this.getString(R.string.no), (dialog, which) -> { - dialog.dismiss(); - }).show(); - return true; - - default: - return super.onOptionsItemSelected(item); - } - } - @Override public boolean onSupportNavigateUp() { finish(); @@ -373,19 +322,6 @@ public class ChallengeDetailActivity extends BaseActivity { } } - @Override - public boolean onSupportNavigateUp() { - finish(); - return true; - } - - @Override - public void onBackPressed() { - finish(); - } - - - @Subscribe public void onEvent(TaskCheckedCommand event) { switch (event.Task.type) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/LoginActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/LoginActivity.java index 129b2aaba..e100404b5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/LoginActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/LoginActivity.java @@ -14,6 +14,7 @@ import com.facebook.FacebookCallback; import com.facebook.FacebookException; import com.facebook.login.LoginResult; import com.facebook.login.widget.LoginButton; +import com.habitrpg.android.habitica.BuildConfig; import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HostConfig; import com.habitrpg.android.habitica.R; @@ -104,55 +105,6 @@ public class LoginActivity extends BaseActivity private Menu menu; private CallbackManager callbackManager; private String googleEmail; - private View.OnClickListener mLoginNormalClick = new View.OnClickListener() { - @Override - public void onClick(View v) { - mProgressBar.setVisibility(View.VISIBLE); - if (isRegistering) { - String username, email, password, cpassword; - username = String.valueOf(mUsernameET.getText()).trim(); - email = String.valueOf(mEmail.getText()).trim(); - password = String.valueOf(mPasswordET.getText()); - cpassword = String.valueOf(mConfirmPassword.getText()); - if (username.length() == 0 || password.length() == 0 || email.length() == 0 || cpassword.length() == 0) { - showValidationError(R.string.login_validation_error_fieldsmissing); - return; - } - apiHelper.registerUser(username, email, password, cpassword) - .compose(apiHelper.configureApiCallObserver()) - .subscribe(LoginActivity.this, throwable -> { - hideProgress(); - }); - } else { - String username, password; - username = String.valueOf(mUsernameET.getText()).trim(); - password = String.valueOf(mPasswordET.getText()); - if (username.length() == 0 || password.length() == 0) { - showValidationError(R.string.login_validation_error_fieldsmissing); - return; - } - apiHelper.connectUser(username, password) - .compose(apiHelper.configureApiCallObserver()) - .subscribe(LoginActivity.this, throwable -> { - hideProgress(); - }); - } - } - }; - private View.OnClickListener mForgotPWClick = v -> { - String url = hostConfig.getAddress(); - Intent i = new Intent(Intent.ACTION_VIEW); - i.setData(Uri.parse(url)); - startActivity(i); - }; - - public static void show(final View v) { - v.setVisibility(View.VISIBLE); - } - - public static void hide(final View v) { - v.setVisibility(View.GONE); - } @Override protected int getLayoutResId() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java index d71959ee9..d9d262529 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java @@ -1,14 +1,36 @@ package com.habitrpg.android.habitica.ui.activities; +import android.appwidget.AppWidgetManager; +import android.content.ComponentName; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.content.res.Configuration; +import android.database.sqlite.SQLiteDoneException; +import android.databinding.DataBindingUtil; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; +import android.net.Uri; +import android.os.Build; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.support.design.widget.TabLayout; +import android.support.v4.app.FragmentTransaction; +import android.support.v4.content.FileProvider; +import android.support.v4.view.GravityCompat; +import android.support.v4.widget.DrawerLayout; +import android.support.v7.app.AlertDialog; +import android.support.v7.widget.Toolbar; +import android.util.Log; +import android.view.Gravity; +import android.view.KeyEvent; +import android.view.View; +import android.widget.FrameLayout; + import com.facebook.drawee.view.SimpleDraweeView; -import com.habitrpg.android.habitica.interactors.BuyRewardUseCase; -import com.habitrpg.android.habitica.interactors.CheckClassSelectionUseCase; -import com.habitrpg.android.habitica.interactors.ChecklistCheckUseCase; -import com.habitrpg.android.habitica.interactors.DailyCheckUseCase; -import com.habitrpg.android.habitica.interactors.DisplayItemDropUseCase; -import com.habitrpg.android.habitica.interactors.NotifyUserUseCase; -import com.habitrpg.android.habitica.interactors.TodoCheckUseCase; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.HostConfig; import com.habitrpg.android.habitica.R; @@ -35,7 +57,6 @@ import com.habitrpg.android.habitica.events.TaskSaveEvent; import com.habitrpg.android.habitica.events.TaskUpdatedEvent; import com.habitrpg.android.habitica.events.ToggledEditTagsEvent; import com.habitrpg.android.habitica.events.ToggledInnStateEvent; -import com.habitrpg.android.habitica.events.UpdateGoldGemsPurchasedevent; import com.habitrpg.android.habitica.events.commands.BuyGemItemCommand; import com.habitrpg.android.habitica.events.commands.BuyRewardCommand; import com.habitrpg.android.habitica.events.commands.ChecklistCheckedCommand; @@ -55,7 +76,14 @@ import com.habitrpg.android.habitica.helpers.LanguageHelper; import com.habitrpg.android.habitica.helpers.SoundManager; import com.habitrpg.android.habitica.helpers.TaskAlarmManager; import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager; +import com.habitrpg.android.habitica.interactors.BuyRewardUseCase; +import com.habitrpg.android.habitica.interactors.CheckClassSelectionUseCase; +import com.habitrpg.android.habitica.interactors.ChecklistCheckUseCase; +import com.habitrpg.android.habitica.interactors.DailyCheckUseCase; +import com.habitrpg.android.habitica.interactors.DisplayItemDropUseCase; import com.habitrpg.android.habitica.interactors.HabitScoreUseCase; +import com.habitrpg.android.habitica.interactors.NotifyUserUseCase; +import com.habitrpg.android.habitica.interactors.TodoCheckUseCase; import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy; import com.habitrpg.android.habitica.ui.AvatarView; import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel; @@ -76,9 +104,7 @@ import com.magicmicky.habitrpgwrapper.lib.models.Preferences; import com.magicmicky.habitrpgwrapper.lib.models.Shop; import com.magicmicky.habitrpgwrapper.lib.models.SpecialItems; import com.magicmicky.habitrpgwrapper.lib.models.Stats; -import com.magicmicky.habitrpgwrapper.lib.models.SuppressedModals; import com.magicmicky.habitrpgwrapper.lib.models.Tag; -import com.magicmicky.habitrpgwrapper.lib.models.TaskDirection; import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; import com.magicmicky.habitrpgwrapper.lib.models.TutorialStep; import com.magicmicky.habitrpgwrapper.lib.models.inventory.Egg; @@ -87,7 +113,6 @@ import com.magicmicky.habitrpgwrapper.lib.models.inventory.HatchingPotion; import com.magicmicky.habitrpgwrapper.lib.models.inventory.Item; import com.magicmicky.habitrpgwrapper.lib.models.inventory.Pet; import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent; -import com.magicmicky.habitrpgwrapper.lib.models.responses.HabitResponse; import com.magicmicky.habitrpgwrapper.lib.models.responses.MaintenanceResponse; import com.magicmicky.habitrpgwrapper.lib.models.tasks.ChecklistItem; import com.magicmicky.habitrpgwrapper.lib.models.tasks.Days; @@ -117,38 +142,6 @@ import com.raizlabs.android.dbflow.structure.BaseModel; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; -import android.appwidget.AppWidgetManager; -import android.content.ComponentName; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; -import android.content.res.Configuration; -import android.database.sqlite.SQLiteDoneException; -import android.databinding.DataBindingUtil; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Color; -import android.net.Uri; -import android.os.Build; -import android.os.Bundle; -import android.os.Handler; -import android.preference.PreferenceManager; -import android.support.design.widget.TabLayout; -import android.support.v4.app.FragmentTransaction; -import android.support.v4.content.FileProvider; -import android.support.v4.view.GravityCompat; -import android.support.v4.widget.DrawerLayout; -import android.support.v7.app.AlertDialog; -import android.support.v7.widget.Toolbar; -import android.util.Log; -import android.view.Gravity; -import android.view.KeyEvent; -import android.view.View; -import android.widget.FrameLayout; -import android.widget.TextView; - import java.io.File; import java.util.ArrayList; import java.util.Calendar; @@ -168,6 +161,7 @@ import retrofit2.adapter.rxjava.HttpException; import rx.Observable; import rx.functions.Action1; +import static android.os.Build.VERSION.SDK_INT; import static com.habitrpg.android.habitica.interactors.NotifyUserUseCase.MIN_LEVEL_FOR_SKILLS; import static com.habitrpg.android.habitica.ui.helpers.UiUtils.SnackbarDisplayType; import static com.habitrpg.android.habitica.ui.helpers.UiUtils.showSnackbar; @@ -203,7 +197,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha View avatar_with_bars; @BindView(R.id.overlayFrameLayout) FrameLayout overlayFrameLayout; - + PushNotificationManager pushNotificationManager; // region UseCases @Inject @@ -275,7 +269,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha LanguageHelper languageHelper = new LanguageHelper(sharedPreferences.getString("language", "en")); Locale.setDefault(languageHelper.getLocale()); Configuration configuration = new Configuration(); - if (android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN) { + if (SDK_INT <= Build.VERSION_CODES.JELLY_BEAN) { configuration.locale = languageHelper.getLocale(); } else { configuration.setLocale(languageHelper.getLocale()); @@ -1115,9 +1109,9 @@ public class MainActivity extends BaseActivity implements Action1, Ha @Subscribe public void openMysteryItem(OpenMysteryItemEvent event) { - apiHelper.apiService.openMysteryItem().compose(apiHelper.configureApiCallObserver()) + apiClient.openMysteryItem() .subscribe(mysteryItem -> { - apiHelper.retrieveUser(false).compose(apiHelper.configureApiCallObserver()) + apiClient.retrieveUser(false) .subscribe(new HabitRPGUserCallback(user1 -> { OpenedMysteryItemEvent openedEvent = new OpenedMysteryItemEvent(); openedEvent.numberLeft = user1.getPurchased().getPlan().mysteryItems.size(); @@ -1126,7 +1120,8 @@ public class MainActivity extends BaseActivity implements Action1, Ha MainActivity.this.onUserReceived(user1); }), throwable -> { }); - }, throwable -> {}); + }, throwable -> { + }); } @Subscribe diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PartyInviteActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PartyInviteActivity.java index b965384cd..492dfa8c3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PartyInviteActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PartyInviteActivity.java @@ -41,6 +41,8 @@ public class PartyInviteActivity extends BaseActivity { public static final String IS_EMAIL_KEY = "isEmail"; public static final String EMAILS_KEY = "emails"; @Inject + protected HostConfig hostConfig; + @Inject IApiClient apiClient; @BindView(R.id.tab_layout) TabLayout tabLayout; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillMemberActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillMemberActivity.java index 9d8d29c8d..0efb2891d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillMemberActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillMemberActivity.java @@ -20,9 +20,6 @@ import javax.inject.Inject; import butterknife.BindView; public class SkillMemberActivity extends BaseActivity { - - @Inject - public APIHelper apiHelper; @BindView(R.id.recyclerView) RecyclerView recyclerView; private PartyMemberRecyclerViewAdapter viewAdapter; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java index cf55bc4ed..aaf8f4793 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java @@ -1,12 +1,5 @@ package com.habitrpg.android.habitica.ui.fragments; -import com.habitrpg.android.habitica.APIHelper; -import com.habitrpg.android.habitica.helpers.SoundManager; -import com.habitrpg.android.habitica.ui.activities.MainActivity; -import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; -import com.raizlabs.android.dbflow.sql.builder.Condition; -import com.raizlabs.android.dbflow.sql.language.Select; - import android.content.Context; import android.os.Bundle; import android.support.design.widget.TabLayout; @@ -15,7 +8,6 @@ import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.habitrpg.android.habitica.helpers.SoundManager; import com.habitrpg.android.habitica.ui.activities.MainActivity; import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/SubscriptionFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/SubscriptionFragment.java index db7c06e25..88cbcb8db 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/SubscriptionFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/SubscriptionFragment.java @@ -1,6 +1,16 @@ package com.habitrpg.android.habitica.ui.fragments; -import com.habitrpg.android.habitica.APIHelper; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.ProgressBar; +import android.widget.TextView; + import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.events.UserSubscribedEvent; @@ -9,6 +19,7 @@ import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy; import com.habitrpg.android.habitica.ui.SubscriptionDetailsView; import com.habitrpg.android.habitica.ui.SubscriptionOptionView; import com.habitrpg.android.habitica.ui.activities.GemPurchaseActivity; +import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; import com.magicmicky.habitrpgwrapper.lib.models.SubscriptionPlan; @@ -20,18 +31,6 @@ import org.solovyev.android.checkout.ProductTypes; import org.solovyev.android.checkout.RequestListener; import org.solovyev.android.checkout.Sku; -import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.ImageButton; -import android.widget.ImageView; -import android.widget.ProgressBar; -import android.widget.TextView; - import java.util.List; import javax.inject.Inject; @@ -45,7 +44,7 @@ public class SubscriptionFragment extends BaseFragment implements GemPurchaseAct CrashlyticsProxy crashlyticsProxy; @Inject - APIHelper apiHelper; + IApiClient apiClient; @BindView(R.id.subscribe_listitem1_box) View subscribeListitem1Box; @@ -127,8 +126,7 @@ public class SubscriptionFragment extends BaseFragment implements GemPurchaseAct @Subscribe public void fetchUser(@Nullable UserSubscribedEvent event) { - apiHelper.apiService.getUser().compose(apiHelper.configureApiCallObserver()) - .subscribe(this::setUser, throwable -> { + apiClient.getUser().subscribe(this::setUser, throwable -> { }); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java index a4c93515a..62e3f9e3d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java @@ -28,10 +28,7 @@ import javax.inject.Inject; public class AvatarStatsWidgetProvider extends BaseWidgetProvider { private static final String LOG = AvatarStatsWidgetProvider.class.getName(); - @Inject - APIHelper apiHelper; - @Inject - HostConfig hostConfig; + private AppWidgetManager appWidgetManager; private TransactionListener userTransactionListener = new TransactionListener() { @Override diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java index bd094ab4b..1cd24e9ea 100644 --- a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java +++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java @@ -294,7 +294,7 @@ public interface ApiService { // Notifications @POST("notifications/{notificationId}/read") - Observable> readNotificaiton(@Path("notificationId") String notificationId); + Observable> readNotification(@Path("notificationId") String notificationId); @POST("user/open-mystery-item") Observable> openMysteryItem(); diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/IApiClient.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/IApiClient.java index eef7c48cd..f026ec538 100644 --- a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/IApiClient.java +++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/IApiClient.java @@ -15,6 +15,7 @@ import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationResult; import com.magicmicky.habitrpgwrapper.lib.models.Quest; import com.magicmicky.habitrpgwrapper.lib.models.Shop; import com.magicmicky.habitrpgwrapper.lib.models.Status; +import com.magicmicky.habitrpgwrapper.lib.models.SubscriptionValidationRequest; import com.magicmicky.habitrpgwrapper.lib.models.Tag; import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; import com.magicmicky.habitrpgwrapper.lib.models.UserAuth; @@ -66,6 +67,7 @@ public interface IApiClient { Observable purchaseMysterySet(String itemKey); Observable purchaseQuest(String key); + Observable validateSubscription(SubscriptionValidationRequest request); Observable sellItem(String itemType, String itemKey); @@ -101,15 +103,12 @@ public interface IApiClient { Observable deleteTag(String id); - Observable registerUser(UserAuth auth); Observable registerUser(String username, String email, String password, String confirmPassword); - Observable connectLocal(UserAuth auth); Observable connectUser(String username, String password); - Observable connectSocial(UserAuthSocial auth); Observable connectSocial(String network, String userId, String accessToken); - Observable sleep(); + Observable sleep(); Observable revive(); @@ -218,4 +217,6 @@ public interface IApiClient { Observable retrieveUser(boolean b); Observable.Transformer, T> configureApiCallObserver(); + + Observable openMysteryItem(); } From b7915fd0b6f030bbadb49f4aace8dca07240978d Mon Sep 17 00:00:00 2001 From: Negue Date: Mon, 6 Mar 2017 15:21:08 +0100 Subject: [PATCH 07/34] ApiClient & ApiClientImpl (renames) - lower field names --- .../{ApiClient.java => ApiClientImpl.java} | 10 ++--- .../android/habitica/ContentCache.java | 6 +-- .../habitica/HabiticaBaseApplication.java | 6 +-- .../habitica/HabiticaPurchaseVerifier.java | 10 ++--- .../habitica/components/AppComponent.java | 5 +-- .../implementation/BaseRepositoryImpl.java | 6 +-- .../implementation/TaskRepositoryImpl.java | 4 +- .../helpers/PopupNotificationsManager.java | 13 ++----- .../PushNotificationManager.java | 9 +---- .../interactors/DailyCheckUseCase.java | 6 +-- .../interactors/HabitScoreUseCase.java | 8 ++-- .../interactors/ListTasksUseCase.java | 39 ------------------- .../interactors/TodoCheckUseCase.java | 6 +-- .../android/habitica/modules/ApiModule.java | 11 +++--- .../habitica/modules/RepositoryModule.java | 4 +- .../LocalNotificationActionReceiver.java | 4 +- .../activities/ChallengeDetailActivity.java | 4 +- .../ui/activities/ClassSelectionActivity.java | 4 +- .../ui/activities/FullProfileActivity.java | 4 +- .../habitica/ui/activities/IntroActivity.java | 4 +- .../habitica/ui/activities/LoginActivity.java | 4 +- .../habitica/ui/activities/MainActivity.java | 4 +- .../ui/activities/MaintenanceActivity.java | 4 +- .../ui/activities/PartyInviteActivity.java | 4 +- .../habitica/ui/activities/SetupActivity.java | 14 +------ .../ui/activities/SkillMemberActivity.java | 4 +- .../PublicGuildsRecyclerViewAdapter.java | 4 +- .../tasks/RewardsRecyclerViewAdapter.java | 6 +-- .../ui/fragments/BaseMainFragment.java | 4 +- .../ui/fragments/SubscriptionFragment.java | 4 +- .../inventory/shops/ShopFragment.java | 4 +- .../preferences/PreferencesFragment.java | 4 +- .../fragments/setup/AvatarSetupFragment.java | 4 +- .../ui/fragments/social/ChatListFragment.java | 4 +- .../social/GroupInformationFragment.java | 4 +- .../ChallegeDetailDialogHolder.java | 9 ++--- .../ChallengeTasksRecyclerViewFragment.java | 4 +- .../tasks/TaskRecyclerViewFragment.java | 4 +- .../widget/AvatarStatsWidgetProvider.java | 4 +- .../widget/DailiesWidgetProvider.java | 4 +- .../widget/HabitButtonWidgetProvider.java | 12 +----- .../widget/TaskListWidgetProvider.java | 4 +- .../api/{IApiClient.java => ApiClient.java} | 8 +--- .../android/habitica/api/BaseAPITests.java | 4 +- .../PopupNotificationsManagerTest.java | 4 +- 45 files changed, 109 insertions(+), 183 deletions(-) rename Habitica/src/main/java/com/habitrpg/android/habitica/{ApiClient.java => ApiClientImpl.java} (98%) delete mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/interactors/ListTasksUseCase.java rename Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/{IApiClient.java => ApiClient.java} (95%) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ApiClient.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ApiClientImpl.java similarity index 98% rename from Habitica/src/main/java/com/habitrpg/android/habitica/ApiClient.java rename to Habitica/src/main/java/com/habitrpg/android/habitica/ApiClientImpl.java index 666ad9e55..b92ffa790 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ApiClient.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ApiClientImpl.java @@ -11,7 +11,7 @@ import com.habitrpg.android.habitica.database.CheckListItemExcludeStrategy; import com.habitrpg.android.habitica.helpers.PopupNotificationsManager; import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy; import com.magicmicky.habitrpgwrapper.lib.api.ApiService; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.magicmicky.habitrpgwrapper.lib.api.Server; import com.magicmicky.habitrpgwrapper.lib.models.AchievementResult; import com.magicmicky.habitrpgwrapper.lib.models.Challenge; @@ -115,7 +115,7 @@ import rx.functions.Func1; import rx.schedulers.Schedulers; -public class ApiClient implements Action1, IApiClient { +public class ApiClientImpl implements Action1, ApiClient { private final GsonConverterFactory gsonConverter; private final HostConfig hostConfig; private final Retrofit retrofitAdapter; @@ -123,7 +123,7 @@ public class ApiClient implements Action1, IApiClient { CrashlyticsProxy crashlyticsProxy; Context context; - // I think we don't need the ApiClient anymore we could just use ApiService + // I think we don't need the ApiClientImpl anymore we could just use ApiService private final ApiService apiService; final Observable.Transformer apiCallTransformer = @@ -132,7 +132,7 @@ public class ApiClient implements Action1, IApiClient { @Override public Object call(HabitResponse habitResponse) { if (habitResponse.notifications != null) { - PopupNotificationsManager popupNotificationsManager = PopupNotificationsManager.getInstance(ApiClient.this, context); + PopupNotificationsManager popupNotificationsManager = PopupNotificationsManager.getInstance(com.habitrpg.android.habitica.ApiClientImpl.this, context); popupNotificationsManager.showNotificationDialog(habitResponse.notifications); } return habitResponse.getData(); @@ -146,7 +146,7 @@ public class ApiClient implements Action1, IApiClient { //private OnHabitsAPIResult mResultListener; //private HostConfig mConfig; - public ApiClient(GsonConverterFactory gsonConverter, HostConfig hostConfig, CrashlyticsProxy crashlyticsProxy, Context context) { + public ApiClientImpl(GsonConverterFactory gsonConverter, HostConfig hostConfig, CrashlyticsProxy crashlyticsProxy, Context context) { this.gsonConverter = gsonConverter; this.hostConfig = hostConfig; this.context = context; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ContentCache.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ContentCache.java index 5fb8aa1b9..447a22c72 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ContentCache.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ContentCache.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.magicmicky.habitrpgwrapper.lib.models.QuestBoss; import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent; import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData; @@ -16,10 +16,10 @@ import rx.Observable; public class ContentCache { - private IApiClient apiClient; + private ApiClient apiClient; - public ContentCache(IApiClient apiClient) { + public ContentCache(ApiClient apiClient) { this.apiClient = apiClient; } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.java b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.java index 7bba511c4..066581440 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.java @@ -24,7 +24,7 @@ import com.habitrpg.android.habitica.components.AppComponent; 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.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; import com.raizlabs.android.dbflow.config.FlowManager; import com.squareup.leakcanary.LeakCanary; @@ -50,7 +50,7 @@ public abstract class HabiticaBaseApplication extends MultiDexApplication { private static AppComponent component; public RefWatcher refWatcher; @Inject - Lazy lazyApiHelper; + Lazy lazyApiHelper; @Inject SharedPreferences sharedPrefs; @Inject @@ -166,7 +166,7 @@ public abstract class HabiticaBaseApplication extends MultiDexApplication { int lastInstalledVersion = sharedPrefs.getInt("last_installed_version", 0); if (lastInstalledVersion < info.versionCode) { sharedPrefs.edit().putInt("last_installed_version", info.versionCode).apply(); - IApiClient apiClient = this.lazyApiHelper.get(); + ApiClient apiClient = this.lazyApiHelper.get(); apiClient.getContent() .subscribe(contentResult -> { }, throwable -> {}); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.java b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.java index b02497cdb..b34a942d3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.java @@ -2,7 +2,7 @@ package com.habitrpg.android.habitica; import com.habitrpg.android.habitica.events.UserSubscribedEvent; import com.habitrpg.android.habitica.helpers.PurchaseTypes; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationRequest; import com.magicmicky.habitrpgwrapper.lib.models.SubscriptionValidationRequest; import com.magicmicky.habitrpgwrapper.lib.models.Transaction; @@ -31,11 +31,11 @@ import retrofit2.adapter.rxjava.HttpException; public class HabiticaPurchaseVerifier extends BasePurchaseVerifier { private static final String PURCHASED_PRODUCTS_KEY = "PURCHASED_PRODUCTS"; - private final IApiClient apiClient; + private final ApiClient apiClient; private Set purchasedOrderList = new HashSet<>(); private SharedPreferences preferences; - public HabiticaPurchaseVerifier(Context context, IApiClient apiClient) { + public HabiticaPurchaseVerifier(Context context, ApiClient apiClient) { preferences = PreferenceManager.getDefaultSharedPreferences(context); preferences.getStringSet(PURCHASED_PRODUCTS_KEY, purchasedOrderList); @@ -78,7 +78,7 @@ public class HabiticaPurchaseVerifier extends BasePurchaseVerifier { }, throwable -> { if (throwable.getClass().equals(HttpException.class)) { HttpException error = (HttpException)throwable; - ApiClient.ErrorResponse res = apiClient.getErrorResponse((HttpException) throwable); + com.habitrpg.android.habitica.ApiClientImpl.ErrorResponse res = apiClient.getErrorResponse((HttpException) throwable); if (error.code() == 401) { if (res.message.equals("RECEIPT_ALREADY_USED")) { purchasedOrderList.add(purchase.orderId); @@ -107,7 +107,7 @@ public class HabiticaPurchaseVerifier extends BasePurchaseVerifier { }, throwable -> { if (throwable.getClass().equals(HttpException.class)) { HttpException error = (HttpException) throwable; - ApiClient.ErrorResponse res = apiClient.getErrorResponse((HttpException) throwable); + com.habitrpg.android.habitica.ApiClientImpl.ErrorResponse res = apiClient.getErrorResponse((HttpException) throwable); if (error.code() == 401) { if (res.message.equals("RECEIPT_ALREADY_USED")) { purchasedOrderList.add(purchase.orderId); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java b/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java index 4e3923a8e..68b0a6e7f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.components; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.habitrpg.android.habitica.HabiticaBaseApplication; import com.habitrpg.android.habitica.helpers.RemindersManager; import com.habitrpg.android.habitica.helpers.SoundManager; @@ -77,7 +77,6 @@ import com.habitrpg.android.habitica.widget.HabitButtonWidgetProvider; import com.habitrpg.android.habitica.widget.HabitButtonWidgetService; import com.habitrpg.android.habitica.widget.TaskListFactory; import com.habitrpg.android.habitica.widget.TaskListWidgetProvider; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import javax.inject.Singleton; @@ -209,7 +208,7 @@ public interface AppComponent { void inject(ChallengeDetailActivity challengeDetailActivity); - void inject(IApiClient apiClient); + void inject(ApiClient apiClient); void inject(TaskListWidgetProvider taskListWidgetProvider); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.java index a4c0e8898..43904b7b3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.java @@ -2,14 +2,14 @@ package com.habitrpg.android.habitica.data.implementation; import com.habitrpg.android.habitica.data.BaseRepository; import com.habitrpg.android.habitica.data.local.BaseLocalRepository; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; public abstract class BaseRepositoryImpl implements BaseRepository { protected final T localRepository; - protected final IApiClient apiClient; + protected final ApiClient apiClient; - public BaseRepositoryImpl(T localRepository, IApiClient apiClient) { + public BaseRepositoryImpl(T localRepository, ApiClient apiClient) { this.localRepository = localRepository; this.apiClient = apiClient; } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java index fcf1fe723..dcda01185 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.data.implementation; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.habitrpg.android.habitica.data.TaskRepository; import com.habitrpg.android.habitica.data.local.TaskLocalRepository; import com.magicmicky.habitrpgwrapper.lib.models.TaskDirection; @@ -16,7 +16,7 @@ import rx.Observable; public class TaskRepositoryImpl extends BaseRepositoryImpl implements TaskRepository { - public TaskRepositoryImpl(TaskLocalRepository localRepository, IApiClient apiClient) { + public TaskRepositoryImpl(TaskLocalRepository localRepository, ApiClient apiClient) { super(localRepository, apiClient); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManager.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManager.java index 3a73bf489..c1e32a78c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManager.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManager.java @@ -10,16 +10,11 @@ import com.facebook.drawee.view.SimpleDraweeView; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.magicmicky.habitrpgwrapper.lib.models.Notification; import com.magicmicky.habitrpgwrapper.lib.models.notifications.Reward; import android.content.Context; -import android.support.v7.app.AlertDialog; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; import java.util.HashMap; import java.util.List; @@ -32,18 +27,18 @@ import java.util.Map; public class PopupNotificationsManager { private static PopupNotificationsManager instance; private Map seenNotifications; - private IApiClient apiClient; + private ApiClient apiClient; private Context context; // @TODO: A queue for displaying alert dialogues - private PopupNotificationsManager(IApiClient apiClient, Context context) { + private PopupNotificationsManager(ApiClient apiClient, Context context) { this.apiClient = apiClient; this.seenNotifications = new HashMap<>(); this.context = context.getApplicationContext(); } - public static PopupNotificationsManager getInstance(IApiClient apiHelper, Context context) { + public static PopupNotificationsManager getInstance(ApiClient apiHelper, Context context) { if (instance == null) { instance = new PopupNotificationsManager(apiHelper, context); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java index 6fe5b628b..924d7f16c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java @@ -7,15 +7,10 @@ import android.preference.PreferenceManager; import com.google.firebase.iid.FirebaseInstanceId; import com.google.firebase.messaging.RemoteMessage; import com.habitrpg.android.habitica.HabiticaBaseApplication; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; -import com.habitrpg.android.habitica.HabiticaApplication; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; import com.magicmicky.habitrpgwrapper.lib.models.PushDevice; -import android.content.Context; -import android.content.SharedPreferences; -import android.preference.PreferenceManager; - import java.util.HashMap; import java.util.Map; @@ -34,7 +29,7 @@ public class PushNotificationManager { private static final String DEVICE_TOKEN_PREFERENCE_KEY = "device-token-preference"; private static PushNotificationManager instance = null; @Inject - public IApiClient apiClient; + public ApiClient apiClient; private String refreshedToken; private SharedPreferences sharedPreferences; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/DailyCheckUseCase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/DailyCheckUseCase.java index 61a8c0917..8dce653dd 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/DailyCheckUseCase.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/DailyCheckUseCase.java @@ -26,7 +26,7 @@ public class DailyCheckUseCase extends UseCase buildUseCaseObservable(RequestValues requestValues) { - return taskRepository.taskChecked(requestValues.task, requestValues.Up).doOnNext(res -> { + return taskRepository.taskChecked(requestValues.task, requestValues.up).doOnNext(res -> { soundManager.loadAndPlayAudio(SoundManager.SoundDaily); }); @@ -34,13 +34,13 @@ public class DailyCheckUseCase extends UseCase buildUseCaseObservable(RequestValues requestValues) { - return taskRepository.taskChecked(requestValues.habit, requestValues.Up).doOnNext(res -> { + return taskRepository.taskChecked(requestValues.habit, requestValues.up).doOnNext(res -> { - soundManager.loadAndPlayAudio(requestValues.Up ? SoundManager.SoundPlusHabit : SoundManager.SoundMinusHabit); + soundManager.loadAndPlayAudio(requestValues.up ? SoundManager.SoundPlusHabit : SoundManager.SoundMinusHabit); }); } public static final class RequestValues implements UseCase.RequestValues { - protected boolean Up = false; + protected boolean up = false; protected final Task habit; public RequestValues(Task habit, boolean up) { this.habit = habit; - this.Up = up; + this.up = up; } } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/ListTasksUseCase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/ListTasksUseCase.java deleted file mode 100644 index ff0b07f58..000000000 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/ListTasksUseCase.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.habitrpg.android.habitica.interactors; - -import com.habitrpg.android.habitica.data.TaskRepository; -import com.habitrpg.android.habitica.events.HabitScoreEvent; -import com.habitrpg.android.habitica.executors.PostExecutionThread; -import com.habitrpg.android.habitica.executors.ThreadExecutor; -import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; - -import java.util.ArrayList; - -import javax.inject.Inject; - -import rx.Observable; - -public class ListTasksUseCase extends UseCase> { - - private final TaskRepository taskRepository; - - @Inject - public ListTasksUseCase(TaskRepository taskRepository, ThreadExecutor threadExecutor, PostExecutionThread postExecutionThread) { - super(threadExecutor, postExecutionThread); - this.taskRepository = taskRepository; - } - - @Override - protected Observable> buildUseCaseObservable(ListTasksUseCase.RequestValues requestValues) { - return taskRepository.getTasks(requestValues.taskType); - } - - public static final class RequestValues implements UseCase.RequestValues { - - protected final String taskType; - - public RequestValues(String taskType) { - this.taskType = taskType; - } - } -} - diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/TodoCheckUseCase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/TodoCheckUseCase.java index b3734f8fc..df6803fec 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/TodoCheckUseCase.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/TodoCheckUseCase.java @@ -26,7 +26,7 @@ public class TodoCheckUseCase extends UseCase buildUseCaseObservable(TodoCheckUseCase.RequestValues requestValues) { - return taskRepository.taskChecked(requestValues.task, requestValues.Up).doOnNext(res -> { + return taskRepository.taskChecked(requestValues.task, requestValues.up).doOnNext(res -> { soundManager.loadAndPlayAudio(SoundManager.SoundTodo); }); @@ -34,13 +34,13 @@ public class TodoCheckUseCase extends UseCase, Ha public static final int SELECT_CLASS_RESULT = 11; public static final int GEM_PURCHASE_REQUEST = 111; @Inject - public IApiClient apiClient; + public ApiClient apiClient; @Inject public SoundManager soundManager; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MaintenanceActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MaintenanceActivity.java index b52d67ff3..973ecb35a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MaintenanceActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MaintenanceActivity.java @@ -1,7 +1,7 @@ package com.habitrpg.android.habitica.ui.activities; import com.facebook.drawee.view.SimpleDraweeView; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.ui.helpers.MarkdownParser; @@ -28,7 +28,7 @@ public class MaintenanceActivity extends BaseActivity { public MaintenanceApiService maintenanceService; @Inject - public IApiClient apiClient; + public ApiClient apiClient; @BindView(R.id.titleTextView) TextView titleTextView; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PartyInviteActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PartyInviteActivity.java index 492dfa8c3..0a484df5f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PartyInviteActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PartyInviteActivity.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.ui.activities; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.habitrpg.android.habitica.HostConfig; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; @@ -43,7 +43,7 @@ public class PartyInviteActivity extends BaseActivity { @Inject protected HostConfig hostConfig; @Inject - IApiClient apiClient; + ApiClient apiClient; @BindView(R.id.tab_layout) TabLayout tabLayout; @BindView(R.id.view_pager) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java index 9d10ee4cf..af6b31e4e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java @@ -10,7 +10,7 @@ import android.support.v7.preference.PreferenceManager; import android.view.View; import android.widget.Button; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.habitrpg.android.habitica.HostConfig; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback; @@ -28,16 +28,6 @@ import com.raizlabs.android.dbflow.sql.language.Select; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; -import android.content.Intent; -import android.content.SharedPreferences; -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentPagerAdapter; -import android.support.v4.view.ViewPager; -import android.support.v7.preference.PreferenceManager; -import android.view.View; -import android.widget.Button; - import java.util.Calendar; import java.util.HashMap; import java.util.List; @@ -51,7 +41,7 @@ import butterknife.BindView; public class SetupActivity extends BaseActivity implements View.OnClickListener, ViewPager.OnPageChangeListener, HabitRPGUserCallback.OnUserReceived { @Inject - public IApiClient apiClient; + public ApiClient apiClient; @Inject protected HostConfig hostConfig; @BindView(R.id.view_pager) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillMemberActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillMemberActivity.java index 0efb2891d..405835ff3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillMemberActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillMemberActivity.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.ui.activities; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.events.commands.SelectMemberCommand; @@ -25,7 +25,7 @@ public class SkillMemberActivity extends BaseActivity { private PartyMemberRecyclerViewAdapter viewAdapter; @Inject - public IApiClient apiClient; + public ApiClient apiClient; @Override protected int getLayoutResId() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/PublicGuildsRecyclerViewAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/PublicGuildsRecyclerViewAdapter.java index def69e726..7b2c592d1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/PublicGuildsRecyclerViewAdapter.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/PublicGuildsRecyclerViewAdapter.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.ui.adapter.social; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.events.DisplayFragmentEvent; import com.habitrpg.android.habitica.ui.fragments.social.GuildFragment; @@ -26,7 +26,7 @@ import butterknife.ButterKnife; public class PublicGuildsRecyclerViewAdapter extends RecyclerView.Adapter implements Filterable { - public IApiClient apiClient; + public ApiClient apiClient; private List publicGuildList; private List fullPublicGuildList; private List memberGuildIDs; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.java index 67c378c65..45c6a27d4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.java @@ -7,7 +7,7 @@ import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.helpers.TagsHelper; import com.habitrpg.android.habitica.ui.viewHolders.tasks.RewardViewHolder; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData; import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; @@ -26,9 +26,9 @@ public class RewardsRecyclerViewAdapter extends BaseTasksRecyclerViewAdapter challengeJoinedAction; @@ -81,7 +80,7 @@ public class ChallegeDetailDialogHolder { ButterKnife.bind(this, view); } - public void bind(AlertDialog dialog, IApiClient apiClient, HabitRPGUser user, Challenge challenge, + public void bind(AlertDialog dialog, ApiClient apiClient, HabitRPGUser user, Challenge challenge, Action1 challengeJoinedAction, Action1 challengeLeftAction) { this.dialog = dialog; this.apiClient = apiClient; @@ -326,7 +325,7 @@ public class ChallegeDetailDialogHolder { } - public static void showDialog(Activity activity, IApiClient apiClient, HabitRPGUser user, Challenge challenge, + public static void showDialog(Activity activity, ApiClient apiClient, HabitRPGUser user, Challenge challenge, Action1 challengeJoinedAction, Action1 challengeLeftAction) { View dialogLayout = activity.getLayoutInflater().inflate(R.layout.dialog_challenge_detail, null); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java index 6fb43c051..53a6fd7b3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java @@ -1,7 +1,7 @@ package com.habitrpg.android.habitica.ui.fragments.social.challenges; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.helpers.TagsHelper; @@ -37,7 +37,7 @@ public class ChallengeTasksRecyclerViewFragment extends BaseFragment { @Named("UserID") String userID; @Inject - IApiClient apiClient; + ApiClient apiClient; ObservableList tasksOnInitialize; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java index 3ced375a3..19f4d44ac 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.ui.fragments.tasks; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.events.TaskCreatedEvent; @@ -52,7 +52,7 @@ public class TaskRecyclerViewFragment extends BaseFragment implements View.OnCli @Named("UserID") String userID; @Inject - IApiClient apiClient; + ApiClient apiClient; @Inject TagsHelper tagsHelper; LinearLayoutManager layoutManager = null; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java index 62e3f9e3d..0ccb9e6d5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.widget; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.HabiticaBaseApplication; import com.habitrpg.android.habitica.HostConfig; @@ -53,7 +53,7 @@ public class AvatarStatsWidgetProvider extends BaseWidgetProvider { } @Inject - IApiClient apiClient; + ApiClient apiClient; @Inject HostConfig hostConfig; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/DailiesWidgetProvider.java b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/DailiesWidgetProvider.java index cacabc091..583d745d1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/DailiesWidgetProvider.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/DailiesWidgetProvider.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.widget; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.HabiticaBaseApplication; import com.habitrpg.android.habitica.HostConfig; @@ -16,7 +16,7 @@ public class DailiesWidgetProvider extends TaskListWidgetProvider { public static final String TASK_ID_ITEM = "com.habitrpg.android.habitica.TASK_ID_ITEM"; @Inject - IApiClient apiClient; + ApiClient apiClient; @Inject HostConfig hostConfig; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/HabitButtonWidgetProvider.java b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/HabitButtonWidgetProvider.java index 7392983ef..61b4dff9a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/HabitButtonWidgetProvider.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/HabitButtonWidgetProvider.java @@ -8,7 +8,7 @@ import android.os.Build; import android.os.Bundle; import android.widget.RemoteViews; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.HabiticaBaseApplication; import com.habitrpg.android.habitica.HostConfig; @@ -17,14 +17,6 @@ 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 android.appwidget.AppWidgetManager; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.widget.RemoteViews; - import javax.inject.Inject; public class HabitButtonWidgetProvider extends BaseWidgetProvider { @@ -33,7 +25,7 @@ public class HabitButtonWidgetProvider extends BaseWidgetProvider { public static final String TASK_ID = "com.habitrpg.android.habitica.TASK_ID_ITEM"; public static final String TASK_DIRECTION = "com.habitrpg.android.habitica.TASK_DIRECTION"; @Inject - public IApiClient apiClient; + public ApiClient apiClient; @Inject public HostConfig hostConfig; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TaskListWidgetProvider.java b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TaskListWidgetProvider.java index 81d707404..ab73f7c48 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TaskListWidgetProvider.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TaskListWidgetProvider.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.widget; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.HabiticaBaseApplication; import com.habitrpg.android.habitica.HostConfig; @@ -28,7 +28,7 @@ public abstract class TaskListWidgetProvider extends BaseWidgetProvider { public static final String TASK_ID_ITEM = "com.habitrpg.android.habitica.TASK_ID_ITEM"; @Inject - IApiClient apiClient; + ApiClient apiClient; @Inject HostConfig hostConfig; diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/IApiClient.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiClient.java similarity index 95% rename from Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/IApiClient.java rename to Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiClient.java index f026ec538..b8c465a70 100644 --- a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/IApiClient.java +++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiClient.java @@ -1,7 +1,5 @@ package com.magicmicky.habitrpgwrapper.lib.api; -import com.habitrpg.android.habitica.ApiClient; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; import com.magicmicky.habitrpgwrapper.lib.models.AchievementResult; import com.magicmicky.habitrpgwrapper.lib.models.Challenge; import com.magicmicky.habitrpgwrapper.lib.models.ChatMessage; @@ -18,9 +16,7 @@ import com.magicmicky.habitrpgwrapper.lib.models.Status; import com.magicmicky.habitrpgwrapper.lib.models.SubscriptionValidationRequest; import com.magicmicky.habitrpgwrapper.lib.models.Tag; import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; -import com.magicmicky.habitrpgwrapper.lib.models.UserAuth; import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse; -import com.magicmicky.habitrpgwrapper.lib.models.UserAuthSocial; import com.magicmicky.habitrpgwrapper.lib.models.responses.BuyResponse; import com.magicmicky.habitrpgwrapper.lib.models.responses.FeedResponse; import com.magicmicky.habitrpgwrapper.lib.models.responses.HabitResponse; @@ -38,7 +34,7 @@ import java.util.Map; import retrofit2.adapter.rxjava.HttpException; import rx.Observable; -public interface IApiClient { +public interface ApiClient { void setLanguageCode(String languageCode); Observable getStatus(); @@ -208,7 +204,7 @@ public interface IApiClient { // Notifications Observable readNotificaiton(String notificationId); - ApiClient.ErrorResponse getErrorResponse(HttpException throwable); + com.habitrpg.android.habitica.ApiClientImpl.ErrorResponse getErrorResponse(HttpException throwable); void updateAuthenticationCredentials(String userID, String apiToken); diff --git a/Habitica/src/test/java/com/habitrpg/android/habitica/api/BaseAPITests.java b/Habitica/src/test/java/com/habitrpg/android/habitica/api/BaseAPITests.java index 728b8e16e..5a32217f9 100644 --- a/Habitica/src/test/java/com/habitrpg/android/habitica/api/BaseAPITests.java +++ b/Habitica/src/test/java/com/habitrpg/android/habitica/api/BaseAPITests.java @@ -1,7 +1,7 @@ package com.habitrpg.android.habitica.api; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.habitrpg.android.habitica.BuildConfig; import com.habitrpg.android.habitica.HostConfig; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; @@ -18,7 +18,7 @@ import rx.observers.TestSubscriber; public class BaseAPITests { - public IApiClient apiClient; + public ApiClient apiClient; public HostConfig hostConfig; public String username; diff --git a/Habitica/src/test/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManagerTest.java b/Habitica/src/test/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManagerTest.java index 19d2f6fc3..d1d732fd4 100644 --- a/Habitica/src/test/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManagerTest.java +++ b/Habitica/src/test/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManagerTest.java @@ -4,7 +4,7 @@ import android.app.Activity; import android.app.AlertDialog; import android.os.Build; -import com.magicmicky.habitrpgwrapper.lib.api.IApiClient; +import com.magicmicky.habitrpgwrapper.lib.api.ApiClient; import com.habitrpg.android.habitica.BuildConfig; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.HostConfig; @@ -37,7 +37,7 @@ import static org.mockito.Mockito.verify; @RunWith(RobolectricTestRunner.class) public class PopupNotificationsManagerTest { - public IApiClient apiClient; + public ApiClient apiClient; public HostConfig hostConfig; public String username; From 644a8486b1722ac2418d8826cc79837a432fb058 Mon Sep 17 00:00:00 2001 From: Negue Date: Mon, 6 Mar 2017 16:14:45 +0100 Subject: [PATCH 08/34] move ErrorResponse to separate File --- .../java/com/habitrpg/android/habitica/ApiClientImpl.java | 6 +----- .../java/com/habitrpg/android/habitica/ErrorResponse.java | 5 +++++ .../habitrpg/android/habitica/HabiticaPurchaseVerifier.java | 4 ++-- .../com/magicmicky/habitrpgwrapper/lib/api/ApiClient.java | 3 ++- 4 files changed, 10 insertions(+), 8 deletions(-) create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ErrorResponse.java diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ApiClientImpl.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ApiClientImpl.java index b92ffa790..112679ada 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ApiClientImpl.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ApiClientImpl.java @@ -823,10 +823,6 @@ public class ApiClientImpl implements Action1, ApiClient { return apiService.readNotification(notificationId).compose(configureApiCallObserver()); } - public static class ErrorResponse { - public String message; - } - public ObservablegetContent() { return apiService.getContent(languageCode).compose(configureApiCallObserver()); } @@ -837,4 +833,4 @@ public class ApiClientImpl implements Action1, ApiClient { return apiService.openMysteryItem().compose(configureApiCallObserver()); } -} +} \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ErrorResponse.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ErrorResponse.java new file mode 100644 index 000000000..124912df5 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ErrorResponse.java @@ -0,0 +1,5 @@ +package com.habitrpg.android.habitica; + +public class ErrorResponse { + public String message; +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.java b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.java index b34a942d3..a4e409ea1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.java @@ -78,7 +78,7 @@ public class HabiticaPurchaseVerifier extends BasePurchaseVerifier { }, throwable -> { if (throwable.getClass().equals(HttpException.class)) { HttpException error = (HttpException)throwable; - com.habitrpg.android.habitica.ApiClientImpl.ErrorResponse res = apiClient.getErrorResponse((HttpException) throwable); + ErrorResponse res = apiClient.getErrorResponse((HttpException) throwable); if (error.code() == 401) { if (res.message.equals("RECEIPT_ALREADY_USED")) { purchasedOrderList.add(purchase.orderId); @@ -107,7 +107,7 @@ public class HabiticaPurchaseVerifier extends BasePurchaseVerifier { }, throwable -> { if (throwable.getClass().equals(HttpException.class)) { HttpException error = (HttpException) throwable; - com.habitrpg.android.habitica.ApiClientImpl.ErrorResponse res = apiClient.getErrorResponse((HttpException) throwable); + ErrorResponse res = apiClient.getErrorResponse((HttpException) throwable); if (error.code() == 401) { if (res.message.equals("RECEIPT_ALREADY_USED")) { purchasedOrderList.add(purchase.orderId); diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiClient.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiClient.java index b8c465a70..5c25332c7 100644 --- a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiClient.java +++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiClient.java @@ -1,5 +1,6 @@ package com.magicmicky.habitrpgwrapper.lib.api; +import com.habitrpg.android.habitica.ErrorResponse; import com.magicmicky.habitrpgwrapper.lib.models.AchievementResult; import com.magicmicky.habitrpgwrapper.lib.models.Challenge; import com.magicmicky.habitrpgwrapper.lib.models.ChatMessage; @@ -204,7 +205,7 @@ public interface ApiClient { // Notifications Observable readNotificaiton(String notificationId); - com.habitrpg.android.habitica.ApiClientImpl.ErrorResponse getErrorResponse(HttpException throwable); + ErrorResponse getErrorResponse(HttpException throwable); void updateAuthenticationCredentials(String userID, String apiToken); From 61d9eb73f5b10fa65b27608185037df9ac1ede31 Mon Sep 17 00:00:00 2001 From: Keith Holliday Date: Wed, 29 Mar 2017 13:40:15 -0600 Subject: [PATCH 09/34] Fixed issue with filtercommand running on async thread --- .../habitica/ui/fragments/tasks/TasksFragment.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java index 2032d667b..5041a122c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java @@ -99,7 +99,14 @@ public class TasksFragment extends BaseMainFragment implements OnCheckedChangeLi } } tagsHelper.setTags(tagList); - EventBus.getDefault().post(new FilterTasksByTagsCommand()); + + TasksFragment.this.activity.runOnUiThread(new Runnable() { + @Override + public void run() { + EventBus.getDefault().post(new FilterTasksByTagsCommand()); + } + }); + } }; From 9571087f0df95ac4ced4e6f71a353d04624dd3ba Mon Sep 17 00:00:00 2001 From: Keith Holliday Date: Wed, 29 Mar 2017 15:04:59 -0600 Subject: [PATCH 10/34] Fixed class bonus calculation --- .../ui/activities/FullProfileActivity.java | 60 ++++++++++--------- .../lib/models/inventory/Item.java | 11 ++++ 2 files changed, 43 insertions(+), 28 deletions(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java index 4e4caa1de..bdf23fbcc 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java @@ -383,6 +383,11 @@ public class FullProfileActivity extends BaseActivity { float conAttributes = 0; float perAttributes = 0; + float strClassBonus = 0; + float intClassBonus = 0; + float conClassBonus = 0; + float perClassBonus = 0; + // Summarize stats and fill equipment table for (ItemData i : obj) { int str_ = (int) i.getStr(); @@ -416,40 +421,39 @@ public class FullProfileActivity extends BaseActivity { } addEquipmentRow(equipmentTableLayout, i.getKey(), i.getText(), sb.toString()); + + // Calculate class bonus + String itemClass = i.getKlass(); + + if (itemClass.isEmpty()) { + continue; + } + + switch (itemClass) { + case "rogue": + strClassBonus = str_ * 0.5f; + perClassBonus = per_ * 0.5f; + break; + case "healer": + conClassBonus = con_ * 0.5f; + intClassBonus = int_ * 0.5f; + break; + case "warrior": + strClassBonus = str_ * 0.5f; + conClassBonus = con_ * 0.5f; + break; + case "wizard": + intClassBonus = int_ * 0.5f; + perClassBonus = per_ * 0.5f; + break; + } } stopAndHideProgress(equipmentProgress); equipmentTableLayout.setVisibility(View.VISIBLE); addAttributeRow(getString(R.string.battle_gear) + ": ", strAttributes, intAttributes, conAttributes, perAttributes, true, false); - - if (!user.getPreferences().isDisableClasses()) { - float strClassBonus = 0; - float intClassBonus = 0; - float conClassBonus = 0; - float perClassBonus = 0; - - switch (user.getStats().get_class()) { - case rogue: - strClassBonus = strAttributes * 0.5f; - perClassBonus = perAttributes * 0.5f; - break; - case healer: - conClassBonus = conAttributes * 0.5f; - intClassBonus = intClassBonus * 0.5f; - break; - case warrior: - strClassBonus = strAttributes * 0.5f; - conClassBonus = conAttributes * 0.5f; - break; - case wizard: - intClassBonus = intClassBonus * 0.5f; - perClassBonus = perAttributes * 0.5f; - break; - } - - addAttributeRow(getString(R.string.profile_class_bonus), strClassBonus, intClassBonus, conClassBonus, perClassBonus, false, false); - } + addAttributeRow(getString(R.string.profile_class_bonus), strClassBonus, intClassBonus, conClassBonus, perClassBonus, false, false); } public void gotCostume(List obj) { diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/inventory/Item.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/inventory/Item.java index 92ed5789a..aac6cc0bf 100644 --- a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/inventory/Item.java +++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/inventory/Item.java @@ -16,6 +16,9 @@ public abstract class Item extends BaseModel { @Column Integer value, owned; + @Column + String klass; + public String getKey() { return key; } @@ -59,5 +62,13 @@ public abstract class Item extends BaseModel { this.owned = owned; } + public String getKlass() { + return klass; + } + + public void setKlass(String klass) { + this.klass = klass; + } + public abstract String getType(); } From 3c375cbe86d976a9ac17ab732caa254196eefd7e Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Wed, 29 Mar 2017 15:05:34 +0200 Subject: [PATCH 11/34] Correctly set x-client header --- .../habitrpg/android/habitica/APIHelper.java | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/APIHelper.java b/Habitica/src/main/java/com/habitrpg/android/habitica/APIHelper.java index c929a0785..7ff2f46e1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/APIHelper.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/APIHelper.java @@ -151,20 +151,19 @@ public class APIHelper implements Action1 { .addInterceptor(logging) .addNetworkInterceptor(chain -> { Request original = chain.request(); + Request.Builder builder = original.newBuilder(); if (this.hostConfig.getUser() != null) { - Request.Builder builder = original.newBuilder() + builder = builder .header("x-api-key", this.hostConfig.getApi()) - .header("x-api-user", this.hostConfig.getUser()) - .header("x-client", "habitica-android"); - if (userAgent != null) { - builder = builder.header("user-agent", userAgent); - } - Request request = builder.method(original.method(), original.body()) - .build(); - return chain.proceed(request); - } else { - return chain.proceed(original); + .header("x-api-user", this.hostConfig.getUser()); } + builder = builder.header("x-client", "habitica-android"); + if (userAgent != null) { + builder = builder.header("user-agent", userAgent); + } + Request request = builder.method(original.method(), original.body()) + .build(); + return chain.proceed(request); }) .build(); From c923e93d3527b588b24afa179f383775316cf389 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Thu, 30 Mar 2017 09:59:53 +0200 Subject: [PATCH 12/34] Implement new avatar customization --- .../creator_active_pixel_arrow_left.png | Bin 0 -> 18344 bytes .../creator_active_pixel_arrow_right.png | Bin 0 -> 18318 bytes .../res/drawable-hdpi/creator_chair_black.png | Bin 0 -> 18899 bytes .../res/drawable-hdpi/creator_chair_blue.png | Bin 0 -> 18900 bytes .../res/drawable-hdpi/creator_chair_green.png | Bin 0 -> 18910 bytes .../res/drawable-hdpi/creator_chair_pink.png | Bin 0 -> 18896 bytes .../res/drawable-hdpi/creator_chair_red.png | Bin 0 -> 18877 bytes .../drawable-hdpi/creator_chair_yellow.png | Bin 0 -> 18911 bytes .../creator_eyewear_special_blacktopframe.png | Bin 0 -> 18290 bytes .../creator_eyewear_special_bluetopframe.png | Bin 0 -> 18306 bytes .../creator_eyewear_special_greentopframe.png | Bin 0 -> 18313 bytes .../creator_eyewear_special_pinktopframe.png | Bin 0 -> 18311 bytes .../creator_eyewear_special_redtopframe.png | Bin 0 -> 18308 bytes .../creator_eyewear_special_whitetopframe.png | Bin 0 -> 18288 bytes ...creator_eyewear_special_yellowtopframe.png | Bin 0 -> 18296 bytes .../creator_hair_bangs_2_black.png | Bin 0 -> 18380 bytes .../creator_hair_bangs_2_blond.png | Bin 0 -> 18427 bytes .../creator_hair_bangs_2_brown.png | Bin 0 -> 18388 bytes .../creator_hair_bangs_2_white.png | Bin 0 -> 18399 bytes .../creator_hair_bangs_3_black.png | Bin 0 -> 18379 bytes .../creator_hair_bangs_3_blond.png | Bin 0 -> 18404 bytes .../creator_hair_bangs_3_brown.png | Bin 0 -> 18395 bytes .../creator_hair_bangs_3_white.png | Bin 0 -> 18395 bytes .../creator_hair_base_1_black.png | Bin 0 -> 18311 bytes .../creator_hair_base_1_blond.png | Bin 0 -> 18335 bytes .../creator_hair_base_1_brown.png | Bin 0 -> 18328 bytes .../drawable-hdpi/creator_hair_base_1_red.png | Bin 0 -> 18330 bytes .../creator_hair_base_1_white.png | Bin 0 -> 18325 bytes .../creator_hair_base_3_black.png | Bin 0 -> 18356 bytes .../creator_hair_base_3_blond.png | Bin 0 -> 18383 bytes .../creator_hair_base_3_brown.png | Bin 0 -> 18371 bytes .../drawable-hdpi/creator_hair_base_3_red.png | Bin 0 -> 18382 bytes .../creator_hair_base_3_white.png | Bin 0 -> 18367 bytes .../drawable-hdpi/creator_hair_flower_1.png | Bin 0 -> 18218 bytes .../drawable-hdpi/creator_hair_flower_2.png | Bin 0 -> 18222 bytes .../drawable-hdpi/creator_hair_flower_3.png | Bin 0 -> 18221 bytes .../drawable-hdpi/creator_hair_flower_4.png | Bin 0 -> 18219 bytes .../drawable-hdpi/creator_hair_flower_5.png | Bin 0 -> 18219 bytes .../drawable-hdpi/creator_hair_flower_6.png | Bin 0 -> 18218 bytes .../creator_inactive_pixel_arrow_left.png | Bin 0 -> 18349 bytes .../creator_inactive_pixel_arrow_right.png | Bin 0 -> 18340 bytes Habitica/res/drawable-hdpi/icon_body.png | Bin 1602 -> 1753 bytes Habitica/res/drawable-hdpi/icon_extras.png | Bin 1261 -> 1323 bytes Habitica/res/drawable-hdpi/icon_hair.png | Bin 1902 -> 1565 bytes Habitica/res/drawable-hdpi/icon_skin.png | Bin 1446 -> 1400 bytes .../creator_active_pixel_arrow_left.png | Bin 0 -> 18260 bytes .../creator_active_pixel_arrow_right.png | Bin 0 -> 18265 bytes .../res/drawable-mdpi/creator_chair_black.png | Bin 0 -> 18823 bytes .../res/drawable-mdpi/creator_chair_blue.png | Bin 0 -> 18831 bytes .../res/drawable-mdpi/creator_chair_green.png | Bin 0 -> 18843 bytes .../res/drawable-mdpi/creator_chair_pink.png | Bin 0 -> 18827 bytes .../res/drawable-mdpi/creator_chair_red.png | Bin 0 -> 18807 bytes .../drawable-mdpi/creator_chair_yellow.png | Bin 0 -> 18845 bytes .../creator_eyewear_special_blacktopframe.png | Bin 0 -> 18262 bytes .../creator_eyewear_special_bluetopframe.png | Bin 0 -> 18277 bytes .../creator_eyewear_special_greentopframe.png | Bin 0 -> 18280 bytes .../creator_eyewear_special_pinktopframe.png | Bin 0 -> 18285 bytes .../creator_eyewear_special_redtopframe.png | Bin 0 -> 18280 bytes .../creator_eyewear_special_whitetopframe.png | Bin 0 -> 18263 bytes ...creator_eyewear_special_yellowtopframe.png | Bin 0 -> 18270 bytes .../creator_hair_bangs_2_blond.png | Bin 0 -> 18400 bytes .../creator_hair_bangs_2_brown.png | Bin 0 -> 18360 bytes .../creator_hair_bangs_2_white.png | Bin 0 -> 18379 bytes .../creator_hair_bangs_3_black.png | Bin 0 -> 18351 bytes .../creator_hair_bangs_3_blond.png | Bin 0 -> 18384 bytes .../creator_hair_bangs_3_brown.png | Bin 0 -> 18365 bytes .../creator_hair_bangs_3_white.png | Bin 0 -> 18366 bytes .../creator_hair_base_1_black.png | Bin 0 -> 18288 bytes .../creator_hair_base_1_blond.png | Bin 0 -> 18308 bytes .../creator_hair_base_1_brown.png | Bin 0 -> 18300 bytes .../drawable-mdpi/creator_hair_base_1_red.png | Bin 0 -> 18305 bytes .../creator_hair_base_1_white.png | Bin 0 -> 18301 bytes .../creator_hair_base_3_black.png | Bin 0 -> 18332 bytes .../creator_hair_base_3_blond.png | Bin 0 -> 18364 bytes .../creator_hair_base_3_brown.png | Bin 0 -> 18350 bytes .../drawable-mdpi/creator_hair_base_3_red.png | Bin 0 -> 18362 bytes .../creator_hair_base_3_white.png | Bin 0 -> 18348 bytes .../drawable-mdpi/creator_hair_flower_1.png | Bin 0 -> 18185 bytes .../drawable-mdpi/creator_hair_flower_2.png | Bin 0 -> 18186 bytes .../drawable-mdpi/creator_hair_flower_3.png | Bin 0 -> 18186 bytes .../drawable-mdpi/creator_hair_flower_4.png | Bin 0 -> 18185 bytes .../drawable-mdpi/creator_hair_flower_5.png | Bin 0 -> 18186 bytes .../drawable-mdpi/creator_hair_flower_6.png | Bin 0 -> 18186 bytes .../creator_inactive_pixel_arrow_left.png | Bin 0 -> 18294 bytes .../creator_inactive_pixel_arrow_right.png | Bin 0 -> 18295 bytes Habitica/res/drawable-mdpi/icon_body.png | Bin 1061 -> 1148 bytes Habitica/res/drawable-mdpi/icon_extras.png | Bin 856 -> 881 bytes Habitica/res/drawable-mdpi/icon_hair.png | Bin 1094 -> 934 bytes Habitica/res/drawable-mdpi/icon_skin.png | Bin 941 -> 956 bytes .../creator_active_pixel_arrow_left.png | Bin 0 -> 18345 bytes .../creator_active_pixel_arrow_right.png | Bin 0 -> 18354 bytes .../drawable-xhdpi/creator_chair_black.png | Bin 0 -> 18983 bytes .../res/drawable-xhdpi/creator_chair_blue.png | Bin 0 -> 18983 bytes .../drawable-xhdpi/creator_chair_green.png | Bin 0 -> 18996 bytes .../res/drawable-xhdpi/creator_chair_pink.png | Bin 0 -> 18981 bytes .../res/drawable-xhdpi/creator_chair_red.png | Bin 0 -> 18963 bytes .../drawable-xhdpi/creator_chair_yellow.png | Bin 0 -> 19000 bytes .../creator_eyewear_special_blacktopframe.png | Bin 0 -> 18321 bytes .../creator_eyewear_special_bluetopframe.png | Bin 0 -> 18339 bytes .../creator_eyewear_special_greentopframe.png | Bin 0 -> 18347 bytes .../creator_eyewear_special_pinktopframe.png | Bin 0 -> 18349 bytes .../creator_eyewear_special_redtopframe.png | Bin 0 -> 18342 bytes .../creator_eyewear_special_whitetopframe.png | Bin 0 -> 18319 bytes ...creator_eyewear_special_yellowtopframe.png | Bin 0 -> 18330 bytes .../creator_hair_bangs_2_black.png | Bin 0 -> 18413 bytes .../creator_hair_bangs_2_blond.png | Bin 0 -> 18462 bytes .../creator_hair_bangs_2_brown.png | Bin 0 -> 18421 bytes .../creator_hair_bangs_2_white.png | Bin 0 -> 18437 bytes .../creator_hair_bangs_3_black.png | Bin 0 -> 18403 bytes .../creator_hair_bangs_3_blond.png | Bin 0 -> 18440 bytes .../creator_hair_bangs_3_brown.png | Bin 0 -> 18417 bytes .../creator_hair_bangs_3_white.png | Bin 0 -> 18418 bytes .../creator_hair_base_1_black.png | Bin 0 -> 18338 bytes .../creator_hair_base_1_blond.png | Bin 0 -> 18365 bytes .../creator_hair_base_1_brown.png | Bin 0 -> 18358 bytes .../creator_hair_base_1_red.png | Bin 0 -> 18360 bytes .../creator_hair_base_1_white.png | Bin 0 -> 18356 bytes .../creator_hair_base_3_black.png | Bin 0 -> 18404 bytes .../creator_hair_base_3_blond.png | Bin 0 -> 18435 bytes .../creator_hair_base_3_brown.png | Bin 0 -> 18422 bytes .../creator_hair_base_3_red.png | Bin 0 -> 18435 bytes .../creator_hair_base_3_white.png | Bin 0 -> 18420 bytes .../drawable-xhdpi/creator_hair_flower_1.png | Bin 0 -> 18212 bytes .../drawable-xhdpi/creator_hair_flower_2.png | Bin 0 -> 18213 bytes .../drawable-xhdpi/creator_hair_flower_3.png | Bin 0 -> 18213 bytes .../drawable-xhdpi/creator_hair_flower_4.png | Bin 0 -> 18212 bytes .../drawable-xhdpi/creator_hair_flower_5.png | Bin 0 -> 18213 bytes .../drawable-xhdpi/creator_hair_flower_6.png | Bin 0 -> 18213 bytes .../creator_inactive_pixel_arrow_left.png | Bin 0 -> 18382 bytes .../creator_inactive_pixel_arrow_right.png | Bin 0 -> 18389 bytes Habitica/res/drawable-xhdpi/icon_body.png | Bin 2291 -> 2476 bytes Habitica/res/drawable-xhdpi/icon_extras.png | Bin 1701 -> 1779 bytes Habitica/res/drawable-xhdpi/icon_hair.png | Bin 2434 -> 2580 bytes Habitica/res/drawable-xhdpi/icon_skin.png | Bin 1958 -> 1980 bytes .../creator_active_pixel_arrow_left.png | Bin 0 -> 18430 bytes .../creator_active_pixel_arrow_right.png | Bin 0 -> 18442 bytes .../drawable-xxhdpi/creator_chair_black.png | Bin 0 -> 19117 bytes .../drawable-xxhdpi/creator_chair_blue.png | Bin 0 -> 19109 bytes .../drawable-xxhdpi/creator_chair_green.png | Bin 0 -> 19132 bytes .../drawable-xxhdpi/creator_chair_pink.png | Bin 0 -> 19109 bytes .../res/drawable-xxhdpi/creator_chair_red.png | Bin 0 -> 19091 bytes .../drawable-xxhdpi/creator_chair_yellow.png | Bin 0 -> 19134 bytes .../creator_eyewear_special_blacktopframe.png | Bin 0 -> 18381 bytes .../creator_eyewear_special_bluetopframe.png | Bin 0 -> 18397 bytes .../creator_eyewear_special_greentopframe.png | Bin 0 -> 18404 bytes .../creator_eyewear_special_pinktopframe.png | Bin 0 -> 18409 bytes .../creator_eyewear_special_redtopframe.png | Bin 0 -> 18401 bytes .../creator_eyewear_special_whitetopframe.png | Bin 0 -> 18377 bytes ...creator_eyewear_special_yellowtopframe.png | Bin 0 -> 18395 bytes .../creator_hair_bangs_2_black.png | Bin 0 -> 18479 bytes .../creator_hair_bangs_2_blond.png | Bin 0 -> 18537 bytes .../creator_hair_bangs_2_brown.png | Bin 0 -> 18490 bytes .../creator_hair_bangs_2_white.png | Bin 0 -> 18502 bytes .../creator_hair_bangs_3_black.png | Bin 0 -> 18473 bytes .../creator_hair_bangs_3_blond.png | Bin 0 -> 18514 bytes .../creator_hair_bangs_3_brown.png | Bin 0 -> 18485 bytes .../creator_hair_bangs_3_white.png | Bin 0 -> 18486 bytes .../creator_hair_base_1_black.png | Bin 0 -> 18422 bytes .../creator_hair_base_1_blond.png | Bin 0 -> 18445 bytes .../creator_hair_base_1_brown.png | Bin 0 -> 18437 bytes .../creator_hair_base_1_red.png | Bin 0 -> 18440 bytes .../creator_hair_base_1_white.png | Bin 0 -> 18438 bytes .../creator_hair_base_3_black.png | Bin 0 -> 18487 bytes .../creator_hair_base_3_blond.png | Bin 0 -> 18519 bytes .../creator_hair_base_3_brown.png | Bin 0 -> 18510 bytes .../creator_hair_base_3_red.png | Bin 0 -> 18520 bytes .../creator_hair_base_3_white.png | Bin 0 -> 18505 bytes .../drawable-xxhdpi/creator_hair_flower_1.png | Bin 0 -> 18235 bytes .../drawable-xxhdpi/creator_hair_flower_2.png | Bin 0 -> 18239 bytes .../drawable-xxhdpi/creator_hair_flower_3.png | Bin 0 -> 18237 bytes .../drawable-xxhdpi/creator_hair_flower_4.png | Bin 0 -> 18236 bytes .../drawable-xxhdpi/creator_hair_flower_5.png | Bin 0 -> 18236 bytes .../drawable-xxhdpi/creator_hair_flower_6.png | Bin 0 -> 18235 bytes .../creator_inactive_pixel_arrow_left.png | Bin 0 -> 18469 bytes .../creator_inactive_pixel_arrow_right.png | Bin 0 -> 18491 bytes Habitica/res/drawable-xxhdpi/icon_body.png | Bin 3401 -> 3681 bytes Habitica/res/drawable-xxhdpi/icon_extras.png | Bin 2455 -> 2605 bytes Habitica/res/drawable-xxhdpi/icon_hair.png | Bin 3451 -> 3725 bytes Habitica/res/drawable-xxhdpi/icon_skin.png | Bin 3014 -> 2946 bytes .../res/drawable/setup_customization_bg.xml | 9 + .../setup_customization_bg_selected.xml | 16 ++ .../drawable/setup_customization_circle.xml | 5 + Habitica/res/layout/activity_setup.xml | 3 +- Habitica/res/layout/avatar_category.xml | 24 +++ Habitica/res/layout/avatar_setup_drawer.xml | 68 +++++++ Habitica/res/layout/fragment_setup_avatar.xml | 68 ++++--- .../res/layout/setup_customization_item.xml | 26 +++ Habitica/res/values/attrs.xml | 4 + Habitica/res/values/colors.xml | 15 ++ Habitica/res/values/dimens.xml | 1 + Habitica/res/values/strings.xml | 7 + Habitica/res/values/styles.xml | 1 + .../habitica/components/AppComponent.java | 3 +- .../data/SetupCustomizationRepository.java | 14 ++ .../SetupCustomizationRepositoryImpl.java | 172 ++++++++++++++++ .../habitica/modules/RepositoryModule.java | 19 ++ .../setup/CustomizationSetupAdapter.java | 191 ++++++++---------- .../fragments/setup/AvatarSetupFragment.java | 150 +++++++++----- .../ui/views/setup/AvatarCategoryView.java | 62 ++++++ .../setup/AvatarCustomizationDrawer.java | 19 ++ .../lib/models/Preferences.java | 8 +- .../lib/models/SetupCustomization.java | 111 ++++++++++ 202 files changed, 810 insertions(+), 186 deletions(-) create mode 100644 Habitica/res/drawable-hdpi/creator_active_pixel_arrow_left.png create mode 100644 Habitica/res/drawable-hdpi/creator_active_pixel_arrow_right.png create mode 100644 Habitica/res/drawable-hdpi/creator_chair_black.png create mode 100644 Habitica/res/drawable-hdpi/creator_chair_blue.png create mode 100644 Habitica/res/drawable-hdpi/creator_chair_green.png create mode 100644 Habitica/res/drawable-hdpi/creator_chair_pink.png create mode 100644 Habitica/res/drawable-hdpi/creator_chair_red.png create mode 100644 Habitica/res/drawable-hdpi/creator_chair_yellow.png create mode 100644 Habitica/res/drawable-hdpi/creator_eyewear_special_blacktopframe.png create mode 100644 Habitica/res/drawable-hdpi/creator_eyewear_special_bluetopframe.png create mode 100644 Habitica/res/drawable-hdpi/creator_eyewear_special_greentopframe.png create mode 100644 Habitica/res/drawable-hdpi/creator_eyewear_special_pinktopframe.png create mode 100644 Habitica/res/drawable-hdpi/creator_eyewear_special_redtopframe.png create mode 100644 Habitica/res/drawable-hdpi/creator_eyewear_special_whitetopframe.png create mode 100644 Habitica/res/drawable-hdpi/creator_eyewear_special_yellowtopframe.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_bangs_2_black.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_bangs_2_blond.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_bangs_2_brown.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_bangs_2_white.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_bangs_3_black.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_bangs_3_blond.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_bangs_3_brown.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_bangs_3_white.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_base_1_black.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_base_1_blond.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_base_1_brown.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_base_1_red.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_base_1_white.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_base_3_black.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_base_3_blond.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_base_3_brown.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_base_3_red.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_base_3_white.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_flower_1.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_flower_2.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_flower_3.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_flower_4.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_flower_5.png create mode 100644 Habitica/res/drawable-hdpi/creator_hair_flower_6.png create mode 100644 Habitica/res/drawable-hdpi/creator_inactive_pixel_arrow_left.png create mode 100644 Habitica/res/drawable-hdpi/creator_inactive_pixel_arrow_right.png create mode 100644 Habitica/res/drawable-mdpi/creator_active_pixel_arrow_left.png create mode 100644 Habitica/res/drawable-mdpi/creator_active_pixel_arrow_right.png create mode 100644 Habitica/res/drawable-mdpi/creator_chair_black.png create mode 100644 Habitica/res/drawable-mdpi/creator_chair_blue.png create mode 100644 Habitica/res/drawable-mdpi/creator_chair_green.png create mode 100644 Habitica/res/drawable-mdpi/creator_chair_pink.png create mode 100644 Habitica/res/drawable-mdpi/creator_chair_red.png create mode 100644 Habitica/res/drawable-mdpi/creator_chair_yellow.png create mode 100644 Habitica/res/drawable-mdpi/creator_eyewear_special_blacktopframe.png create mode 100644 Habitica/res/drawable-mdpi/creator_eyewear_special_bluetopframe.png create mode 100644 Habitica/res/drawable-mdpi/creator_eyewear_special_greentopframe.png create mode 100644 Habitica/res/drawable-mdpi/creator_eyewear_special_pinktopframe.png create mode 100644 Habitica/res/drawable-mdpi/creator_eyewear_special_redtopframe.png create mode 100644 Habitica/res/drawable-mdpi/creator_eyewear_special_whitetopframe.png create mode 100644 Habitica/res/drawable-mdpi/creator_eyewear_special_yellowtopframe.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_bangs_2_blond.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_bangs_2_brown.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_bangs_2_white.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_bangs_3_black.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_bangs_3_blond.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_bangs_3_brown.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_bangs_3_white.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_base_1_black.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_base_1_blond.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_base_1_brown.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_base_1_red.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_base_1_white.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_base_3_black.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_base_3_blond.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_base_3_brown.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_base_3_red.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_base_3_white.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_flower_1.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_flower_2.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_flower_3.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_flower_4.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_flower_5.png create mode 100644 Habitica/res/drawable-mdpi/creator_hair_flower_6.png create mode 100644 Habitica/res/drawable-mdpi/creator_inactive_pixel_arrow_left.png create mode 100644 Habitica/res/drawable-mdpi/creator_inactive_pixel_arrow_right.png create mode 100644 Habitica/res/drawable-xhdpi/creator_active_pixel_arrow_left.png create mode 100644 Habitica/res/drawable-xhdpi/creator_active_pixel_arrow_right.png create mode 100644 Habitica/res/drawable-xhdpi/creator_chair_black.png create mode 100644 Habitica/res/drawable-xhdpi/creator_chair_blue.png create mode 100644 Habitica/res/drawable-xhdpi/creator_chair_green.png create mode 100644 Habitica/res/drawable-xhdpi/creator_chair_pink.png create mode 100644 Habitica/res/drawable-xhdpi/creator_chair_red.png create mode 100644 Habitica/res/drawable-xhdpi/creator_chair_yellow.png create mode 100644 Habitica/res/drawable-xhdpi/creator_eyewear_special_blacktopframe.png create mode 100644 Habitica/res/drawable-xhdpi/creator_eyewear_special_bluetopframe.png create mode 100644 Habitica/res/drawable-xhdpi/creator_eyewear_special_greentopframe.png create mode 100644 Habitica/res/drawable-xhdpi/creator_eyewear_special_pinktopframe.png create mode 100644 Habitica/res/drawable-xhdpi/creator_eyewear_special_redtopframe.png create mode 100644 Habitica/res/drawable-xhdpi/creator_eyewear_special_whitetopframe.png create mode 100644 Habitica/res/drawable-xhdpi/creator_eyewear_special_yellowtopframe.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_bangs_2_black.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_bangs_2_blond.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_bangs_2_brown.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_bangs_2_white.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_bangs_3_black.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_bangs_3_blond.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_bangs_3_brown.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_bangs_3_white.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_base_1_black.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_base_1_blond.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_base_1_brown.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_base_1_red.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_base_1_white.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_base_3_black.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_base_3_blond.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_base_3_brown.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_base_3_red.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_base_3_white.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_flower_1.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_flower_2.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_flower_3.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_flower_4.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_flower_5.png create mode 100644 Habitica/res/drawable-xhdpi/creator_hair_flower_6.png create mode 100644 Habitica/res/drawable-xhdpi/creator_inactive_pixel_arrow_left.png create mode 100644 Habitica/res/drawable-xhdpi/creator_inactive_pixel_arrow_right.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_active_pixel_arrow_left.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_active_pixel_arrow_right.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_chair_black.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_chair_blue.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_chair_green.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_chair_pink.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_chair_red.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_chair_yellow.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_eyewear_special_blacktopframe.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_eyewear_special_bluetopframe.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_eyewear_special_greentopframe.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_eyewear_special_pinktopframe.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_eyewear_special_redtopframe.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_eyewear_special_whitetopframe.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_eyewear_special_yellowtopframe.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_bangs_2_black.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_bangs_2_blond.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_bangs_2_brown.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_bangs_2_white.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_bangs_3_black.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_bangs_3_blond.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_bangs_3_brown.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_bangs_3_white.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_base_1_black.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_base_1_blond.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_base_1_brown.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_base_1_red.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_base_1_white.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_base_3_black.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_base_3_blond.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_base_3_brown.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_base_3_red.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_base_3_white.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_flower_1.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_flower_2.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_flower_3.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_flower_4.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_flower_5.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_hair_flower_6.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_inactive_pixel_arrow_left.png create mode 100644 Habitica/res/drawable-xxhdpi/creator_inactive_pixel_arrow_right.png create mode 100644 Habitica/res/drawable/setup_customization_bg.xml create mode 100644 Habitica/res/drawable/setup_customization_bg_selected.xml create mode 100644 Habitica/res/drawable/setup_customization_circle.xml create mode 100644 Habitica/res/layout/avatar_category.xml create mode 100644 Habitica/res/layout/avatar_setup_drawer.xml create mode 100644 Habitica/res/layout/setup_customization_item.xml create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/data/SetupCustomizationRepository.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/SetupCustomizationRepositoryImpl.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/modules/RepositoryModule.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/setup/AvatarCategoryView.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/setup/AvatarCustomizationDrawer.java create mode 100644 Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/SetupCustomization.java diff --git a/Habitica/res/drawable-hdpi/creator_active_pixel_arrow_left.png b/Habitica/res/drawable-hdpi/creator_active_pixel_arrow_left.png new file mode 100644 index 0000000000000000000000000000000000000000..d08bca2ca5f2ae185819839dea4dc6f5d11667fd GIT binary patch literal 18344 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_active_pixel_arrow_right.png b/Habitica/res/drawable-hdpi/creator_active_pixel_arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..8e8daaaee9d323dc973ae9f23296acf5f2ae9ffa GIT binary patch literal 18318 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 E2g7w1ApigX literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_chair_black.png b/Habitica/res/drawable-hdpi/creator_chair_black.png new file mode 100644 index 0000000000000000000000000000000000000000..5f3c1c6e936ec133c4241697c7d6f59e437d9a87 GIT binary patch literal 18899 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_chair_blue.png b/Habitica/res/drawable-hdpi/creator_chair_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..1a8b743e7cbcb2c7ce4d3a10ac502440aa057416 GIT binary patch literal 18900 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_chair_green.png b/Habitica/res/drawable-hdpi/creator_chair_green.png new file mode 100644 index 0000000000000000000000000000000000000000..21ed9116748290651c243e92b62febec12b8b64c GIT binary patch literal 18910 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 Dw+TfZ literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_chair_pink.png b/Habitica/res/drawable-hdpi/creator_chair_pink.png new file mode 100644 index 0000000000000000000000000000000000000000..c95baccda5b44cefe7cfe0a161fe09de22e8614b GIT binary patch literal 18896 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 X!AjdoGnBcyH2X0i-s%2GtKl%6EX7Ok>HMJb_d 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 OfVr`?QJ%rRqyGg!uQ2NX literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_chair_yellow.png b/Habitica/res/drawable-hdpi/creator_chair_yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..8a6d30f0c727298e2716f270476669f0956e18f7 GIT binary patch literal 18911 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_eyewear_special_blacktopframe.png b/Habitica/res/drawable-hdpi/creator_eyewear_special_blacktopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..0c5d63cebfa8377ca2273cefb3bb4299f8ca47b9 GIT binary patch literal 18290 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_eyewear_special_bluetopframe.png b/Habitica/res/drawable-hdpi/creator_eyewear_special_bluetopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..fdda988f9680fcc49252c0a4c7eec9e5cf5553ec GIT binary patch literal 18306 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 F_1~PF63YMp literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_eyewear_special_greentopframe.png b/Habitica/res/drawable-hdpi/creator_eyewear_special_greentopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..1e7ef055b157279ef884b785ccd15f9e80620d8b GIT binary patch literal 18313 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 MyVxezdd=ql2F|V(0RR91 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_eyewear_special_pinktopframe.png b/Habitica/res/drawable-hdpi/creator_eyewear_special_pinktopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..9fb75153c5b0dc6c2812288d08a07d0a4c59e8d2 GIT binary patch literal 18311 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 M(|pGQhZXDp8)?G{%>V!Z literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_eyewear_special_redtopframe.png b/Habitica/res/drawable-hdpi/creator_eyewear_special_redtopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..b4bacb0236dd149bf1b9c0317a02f25ef4f6cb73 GIT binary patch literal 18308 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 H{nq~mPjnMe literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_eyewear_special_whitetopframe.png b/Habitica/res/drawable-hdpi/creator_eyewear_special_whitetopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..49cb6192e118c85d50eb7f2f6324b52e3e762258 GIT binary patch literal 18288 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_eyewear_special_yellowtopframe.png b/Habitica/res/drawable-hdpi/creator_eyewear_special_yellowtopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..5611bbdca22338079d74be183c6a5cc35680d87b GIT binary patch literal 18296 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_hair_bangs_2_black.png b/Habitica/res/drawable-hdpi/creator_hair_bangs_2_black.png new file mode 100644 index 0000000000000000000000000000000000000000..4b7d56cd96fd0503f816cb01c6f2b79aa16cd7eb GIT binary patch literal 18380 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 b4pjh_YC=Bf6P%AQ1i;pEnMHy5`mO&43wSr+ literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_hair_bangs_2_blond.png b/Habitica/res/drawable-hdpi/creator_hair_bangs_2_blond.png new file mode 100644 index 0000000000000000000000000000000000000000..64d903f1e6363ed5ee958bff0d43b0c462a05997 GIT binary patch literal 18427 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_hair_bangs_2_white.png b/Habitica/res/drawable-hdpi/creator_hair_bangs_2_white.png new file mode 100644 index 0000000000000000000000000000000000000000..a6fd91d7ee56ac0b82df9631f2bf49f0eea9bdda GIT binary patch literal 18399 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_hair_bangs_3_black.png b/Habitica/res/drawable-hdpi/creator_hair_bangs_3_black.png new file mode 100644 index 0000000000000000000000000000000000000000..59766b8ea72b513566fcaefc1a51ff950e87b0a4 GIT binary patch literal 18379 zcmeI43p7;g`^UEwa_uHbI^&XrxzEsyF=AXp!U)~BnLT52nPH|}I*H1q%SloZk*;o~ zqLipmQ3M^1OPzA(ZR+Y{?r%073AQ*&w!K^_+zrb!AA%HO4G$}86fr0EC5h+QBO zz>Aup3y*UK6ln*!%-N;eOIo5Nh{;{>{M&+}1%%W&TeE~2Wif?6y7$EV7e{ zN>4HH05T^6YpYqlZNO4Auy+3D7Y~4_^!Eoh$^a|&>8Q(OCIYDGP`nM`XAYdITeia% z@Wuf%I8HYxz+*IkbM)dk0B0`(Wwle33IGLV0OuATvjCX55mQ-hrx8r*U;(XIpJE%mLIE8t@8yM=Ygp^3VLZbWoB*aS!c>GG)Fecc)c)wZ3jmpk z>hNs)2E%Gq^J{BOcNeLyLBF~tH>~UH+cwlumnT>Rub3#Ze#it{I6KN*E-G;7=)9hZ zeyf!-*AMLE6sRq_0AzMGdi4p!Y;2G0DSq;#qrLs{;v3d0z&l=>hPV}L%De^x{*I)5 z8hH1|)#v)rgjLb@6W{+)akt<3#GJallehUczeuqEbWv&ellBAM8;-uk-bORp+@=NZ zwn^R9M>wIo-FokWoAd4uv!Az`e3YfPl7X}9=rS7<(b=n5vVS?vpW-bldp-aFy(Rqe z-whRHqx`l$s|y`|YdL72IS+{9IPMJwfYmno80MWq%PIu`u*r-zI%}oXUp~vEOm0s3 zq~>y^PisxLS?k}Zu%2SA$c~y5vUb6#E!KvyHD|Sr)?$BOq)jSw^NURqsA4KSFR5Ax z)INX;8Rdqh(UT`y-BOqi>NLj7`0nu5+pVB+Fy_5Zxx>V1JM~ew<7c?(Iwg`F@a{X9 zC{G9NUWlsy?TCN;$7`_St2pWJ|Wc zW7VAtoj5JpwrsNL#87J#IM>R-+u3``V~1?i9DUN%#>r-rWw*Ii%-2oIb~x1-M70R7@0kl$xzG9i2{`KDz(GY(EXZ0p6LHqRUgC?w`9P z`JUJP>Mr}2$uDL5LzPux)wfo~a}71qX35XuYKG1_lj3|*^TAHdDkjbh|2n1fpxQyc zr?*j&(XZ->cNF(8-fys9%LvQN$vv6dlB?v|=UL56$XV^NDc{bM=+Txl`S$~Pp1J8u zUwdeIaC6MF<8ry#e5U2`NT0#&az59cue&miyJenR(^guEQetTqhMDO2tK`M5k0#$R zI9K!J*9}G`DTCT2J1uf^j!+oH#YC?{_r84`OZm2x;P;0_OD1<3W+nGU?r53ucER%n zS|>@)#dv6?f9`?g1KxQKd2V_3udkTqcW0%aykcA8^D$c0s%r84mGkYn3AK~bJ3XFw zJk3(fn(1OeeV32P^*^C?q{JrlT2NL`O2*aIQ5nwstd{UAoge0G!VWSA13zTFvsd<( zD^%8(Yf`SAMY~B3=F_yXRZV}oF;-n)#5e)&2a}&|ODwLZ9c!@r%}#9>uX1IZep_H= zVC69bIRhO7Czn?)J*n<4#U~e>G#M=Ncr*WcPtuj7O_w+QHfSNQ68A(kPkXs`r0{&m4C*p! zOKR<*9?MNP`ww(sx!!eC>K+r@il$dDxWP;JNPA$<)!-HjxAw*F-0rlc8k0=Nq-j+? zy>+F1vFKg!s%H`R-=(J&rd4!jH=XG*?cw#rH6Ol9I=mpmhbX*v{TAa7w~l&CrNjGi z{;j7XT^X*?+zXw0SQa+X>-3|u7f*!d4uEep=zq~e4!6)Uc zou9ELrj@Z-ZQkz)IQ;k^~`SRgCdGH0e^LnK6{Ft~HuUO07f_U%Q_4s6R zXniw7*lP2^=73F08W-R$@3lcN@IZy&VIb=1?$3`KCbu zS6e@I_r*O=f3DQFQ6mL=Yn34UNNq)bOxDaC%rq0~fkn>oOBU|?m(>)b?3ugf^-d3+ zw_7p1Lc4;ii>)`UkAKWqX*739uY-|G#NIcFrQ~q^o5T|)9mU(`=jpVZsDD#J!XgA9v<$VRx$0_-l7w+PF`qj?-y52 zt)mpsg2S5>+teo+$1amQMZ2`4$SAPEHLu$%IY07>L4=Ec^y>0ETgorU_`g>2RP2b^ z^t$;`_bOL!tWWC&@I!367F~V&j{F%-8p-OL9~(A@b!f%$?_4|ByzhKY-i=~*9p^r$ z>qQGXV}*6rFFb4%uN zW@z?yi!(FFPo&r&{!=`1c0w`xZ?1gonnj?NzIOxjK~oHWaO5s^avpB@Pu~=Y`MY^-)6t@hovhl{b!z;#m#2uH-M1ay z*=b&CUc0jQlBl`E^kokkP)g@0t=l7g0buC@fzo^^l3FB#8 zgXM~$=ErZFH?J!T&FrghwjYp-*;+T0_%1<>F)86-LUpW4?CXq$bPDCUWyoOHrz}Pt zyUrj(W9aBmb-u<-Y~=ff*NBkzjWz}@Hbir zn?rTCvHLt6Y+2~~i9`Y_78@EGiU}oR_#s>@o|l!6Fi?QSV{q7?h+JGG z%K`&`s1%B9H^4{od1gNxP{<4yKv;K3$X_4Af^0WHK_a~$9R!>8HI86?NWcgmHVX>{ zK!LDC2p>HDhle2eatHEN{>@>0b^mnsA|7XKalX-tJwKH}VZ5Kn#GX;vNGgo35Dm^h zDkB5}Mf?yZpC3RU&9brkC;0YBoK+}87m&pZ65muUpka}su@xVS2ibrkhz@Jb&^RKR zKw{$YBN@36jT7hPxFDlF5iwlg>}P`_@Y^V6OadH*NX2~<<(t09ID9sb6aJ5)jP?9B zhKmc;F-Rx^gIJKG4IQ34hR0)52?Q34%pnobzC<>NCb4lOG)N-)qHzlerYti ^75 zj!g1f`FEjh_^kEfRDwf~ZhbbN1&9BdAXFU7l(f(n$3c@gW^6PbZw8`4Ujl^YP)K+- z5dt|Ni}+=ralyVD$TfrqS0*rETp#gV*zjNw8ArrHEHWCTklAPwi^E1!2n+FO3Xw!0 zFQoW#KwsZ4L;N7jcSAYwgm6BEkIOSS+eT`S2Ne8m>la4=Z={9@zz`uM-kKJ=U-stL zqVu(;h&3ZyoC>nU)rZa!CosgOVZUh|JFKtD&obWk%lXd`jK&`)|M?i9eo&C4^dAj1 z((C6zgnW)D6byl^xNwI2v%NVQ_gf)y02)?YuLF4h2TLIYH~jAw!ps-XhDZz9XfqBT z&P7u=At`J!3k{laOgTgxp28x7Ul#hmej&y(ndJutaUnJx`(={k_FiKVbbxe=`COeqr(Azn`V!-AJjAWa)S}QaYye4C0CCgwLZPn#ZZc z*HY9Gs2=cTKSYP8hHOIiUdjuD0=#W_@VQutw(CxEYK%Kzk-u^Ig*qatES2SEUlY)WxS=7aD`aUp<6Hl?^E z^Fer}xDY@jn^Iho`5?SfTnHeNO(`zPd=OqKE(8$CrWBWCJ_xTA7XpZ6Q;JJ6AB0zm z3jsv3Da9q355g}8o##?IoKDn#h-FU{|f9@;JhLUZhNe>E4ZofUmn&kb6{96_;_xW_T z2|J$GRMh@Ul^bu+r*XZuaar&j-W+QOmVe;P!>Bx6!tyVJi67g zLN0GYLVw)3A;szY<8!SxcbUgKDz@?1VXkgHD5l@-gjgekdE18LP}S;{vskIKVxt?n zg3asPP24nM?FDP)*{6imIo^w^C8ZnyvO79Y~%p dD%sW|3+VjIAKh=CeHLZ_INC0;$+up+<=+?BG$sH5 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_hair_bangs_3_blond.png b/Habitica/res/drawable-hdpi/creator_hair_bangs_3_blond.png new file mode 100644 index 0000000000000000000000000000000000000000..4b65e1998dab9ab51f1dff74b0d93d74bf093eca GIT binary patch literal 18404 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_hair_base_1_black.png b/Habitica/res/drawable-hdpi/creator_hair_base_1_black.png new file mode 100644 index 0000000000000000000000000000000000000000..e78c9288b017a432e1365a6634b7d136448c3e46 GIT binary patch literal 18311 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 K+2-4<+xp-AkP*cI literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_hair_base_1_blond.png b/Habitica/res/drawable-hdpi/creator_hair_base_1_blond.png new file mode 100644 index 0000000000000000000000000000000000000000..6ee18f7dc217195304aa44ac468f99275dd79a51 GIT binary patch literal 18335 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_hair_base_1_brown.png b/Habitica/res/drawable-hdpi/creator_hair_base_1_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..2a92f4d645941dc0478f1b4450d0670125204720 GIT binary patch literal 18328 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 Yi32OkkCpl7!6x8f<7{1EwQlQw1GoVgMF0Q* literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_hair_base_1_red.png b/Habitica/res/drawable-hdpi/creator_hair_base_1_red.png new file mode 100644 index 0000000000000000000000000000000000000000..32aa1ba53a23cfd5ec64436dc7f785f0c1cd53a0 GIT binary patch literal 18330 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 VOEzDmZG~q8IN7<`7TT=d{NGk%8SnrA literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_hair_base_3_black.png b/Habitica/res/drawable-hdpi/creator_hair_base_3_black.png new file mode 100644 index 0000000000000000000000000000000000000000..ae59817e8aa66f6d19b5c217acab892432e4b926 GIT binary patch literal 18356 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 BBjNx6 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_hair_base_3_blond.png b/Habitica/res/drawable-hdpi/creator_hair_base_3_blond.png new file mode 100644 index 0000000000000000000000000000000000000000..d3579337bddfbd6052162fc3a3c3d8c52906813a GIT binary patch literal 18383 zcmeI43p7-FxWKo_`&CH~>5NAu8S^lMnZ|gGXUJ=0^fYGnjLBmrGc~A0^5{iU5ph(f zgs3Pb6e{#0dZU~|QitxL(!=BKp`u;QI_utZ*IoCnnPq0r_y7Li_wE1h|NX!J-m})W z-F>NpisEcV002~+9BnH%0YK4>L!r34 z2XF;kegKz;aH3EUyihKS69fW4SaYTqo9flAX)*Bht&MX+)IMjf=X805r_IhNjpX@; zItuDb5_Aqfp6*dK#m-Jft1df1Ix#V7*K`jf6A!uMD6)5@HtuG8+NEIz7EGVB0}J!@kdl^!K7d z^)5q*)WITBsXoCjdWAf4ot%%4@mzy?rx}YhOzD&8=~l+o;Rk17qj73~_TK`4?Bwat zX#0o4>QxKt>rE3&RM#M1U6viu_4jWd?rg~CSpmQ^L1g2w5vq80)MDAF;Nc_ldSwDu zD`l@A*vTqVvpNT4cQ^a=^F(ay4(};_{J68DvC*P!(N4L{;e;P90t!TjSOnv)xGNEUrIC7X!n@9F3~o9 zS3mZc?sl8K3$M*<8eu+fGx{t|Zo>no*OH|+CL>R*Vo1MtUZ74BR6ZX7fW9(r)jb1w z>8OC1XAQ!UHQ&<}ObN*h<{5fGQcQ#G#kzMyKsQ~N}h z&#E#gk5-Veu9Kfe*J)0W^4~$zOO&5+F!qB^m7~nmo%)FD2^t={&dGR3jOPw2!rM{1 z&mwdZA%3O(#pK0x0CwwOT)6{gUv!a S7l+qJsv$xqFQM$tvVA7K`vor35o}F#6 z%k*&9o%{f`<|Hzu7G3#rrku&uAhdDK6`M2WMhYp6n`d-SD(BbCKE3RublLWIjD|Bp znW@osl?tXZLK_5quC*i0g|_sO;|atZecY601v3TdZ64JNbW=_^pPhek%EzlS{jr#M znxm24gQ-c=Q0f~KC|Aw&r*5ZU7nJUq6r244mU^y_DWmQmfI8@F7Z6&5r1MDZhbo8c8sQz^Ra>>`|r*Um=Q3*IrUO-amthZbC;&x@oBo* z?eH@7rSw~&vP#_anA!xk!K{p#ax>Ypgfma2xg4K$cjv5HD%uS5I<4!V+Ci>2&9KC9 z)AZyUiu;%BpTA$r5Jk<+JD&G6PszLA`zAFhceU5%LVIr$ul8Jpdk6Bp^D^CEdue&G za~Ge8&tsq9QZ4_8^c~tR>wCrJiW}t*kL)vR+RJMYN{m^>VMaQED*18iqw!bgpSk^b z(+0z`v?1-XofdhyhY1vuB_=+_p8fk+mU8WB>pmP3ELG?-$Vu&w-0@W7&BEskwT|Ol zN-^Ndz`O&g2Wa_@`5yTWuPaOodvY?5SJ;*LevVePu3fTV(iXgs3Gc5@TZ)24$3syVr6~V z7UlYxq-*$fT#`1bw&iaR%Bm|?lw>2D*eoTMD&h5@yZyKkPjWe`rp43%z zED^k0x9V9$)4R-!;*9E^6D_BDO?x@L@vXn#!u`H5%h!Z|=Sm&rPmj(}!cy~n|6#3ectUg6yuN9|d5MbQ z)!Nl;T~woKW5OfKO2fHJ`y35jBliB4T#gUdzh-jGsIzq2g4{jjE-EfhGKg84=^GHi zSPNnWCT4H)o^>{PI<6@t>{sj;tPM9$g0V%z*FtulN6p2AcJu4j zhdry@Xei&dbM#MfnOfxO+jkUdw9H7IzU7fYYgngNJom=sgRT3{=H_25Wj3&ySlut4 zBC}Sg9>`05k*XS^^0@h|O53utJ@4MzwV+aO8?=om>pu9|>2vXbW#RU`?hgk( z2d^qv8oaKjR=P=gNKQ|+_PZ}^ga>UB2zm4T(b5f$e)vIe@fvdrqA zysZfTTXW>W{VamTlZyTb?!dKycWs(aB10Dp)!!_8EL_lAQ0`W~=B-ta^<&DD`1_VC zhFc%KY2C86QkdP}*y=DK8ynLwocu0HjWRjuVA9PvmAKbg=41llxn<~3_h1gCf!Q!W zYsT=A;hTjsG*OWs?!SIm-*PWctDYH^iMr5SZ`Ue>%$QA%t+{dBP1Tg3K0Gvn-gN8`=;!&E`r0f(DlK)qFs3uFo5G25ej-m zETu9c0vQCRt|eKK6h?#`1cL%PA}ly4gij2!&>i(lguaWKQM!oHE`mS{U29Q51kKeQ zLE(mi2)r>K$v|T<2s45)29Gy0!x|y5XbcX8#-K1JNDP69!x7PF#Fv*YSrPh13T3j0 zp0@U1!a5e_;nvM1|3LD2y>0^$R0cSMg@S z!9TU+3+y&PXYyraKMlyIhVwv_C&=fn4`qOM8^92O-p@{g$@u1nw>~szln;}E0)xO{ z$b=7_Jm#mT!25a!^3D9a)A*+T<>&<**7)RnXDibD(hLma{K8D688aJAg|QhTLHS3d zgo1PdH6nOp|s{#$|&>E`Avkb!1EG0ZVY491L(r2At*B#VH< zFik)@i_S3l8fb#E9|F0Ba-hmY51P#bkq!aK=B#yyiA_-V17{LUG z#hVlSS#*E@uOWWo=7&&@96pp!;S=%<%C^zk;{~q!zV)jjh%;J4c=S*{C|a5px?k7k zx1#f{rig4tmpGBm5LF*CLzKWElZ5)Nb^NrxS$;9&{5YNe48fTH3Fg0!Aq)UR#HIh3 ztI=M+cEabf1VVZ!Xw8N){qIw;~`5%}HK7GS~Zz9b6F-#C=&P1BA zFi#Q*Z# z{aF3~Hy6>rHg{vI@%zg7wc7qzNl8owk;M%SrVGfNU^*K_@j}=n)Oh1~zL3WE5DGVl z8|unsf@El`_*wH$t)Smd-N$}9CG$NUY!FU%6jKbr)D(#|#!PfGq2B~QqRSK_v|B)x zi#}SVA)6oC;QeW$svop|w7(e^4ZTnp(dQS_iE6m1uXxjmYPjjRrFRHNK*oNF25X*R zCAyX(jzaZ#a-hAQFWR$k=3i{!ik}+#{>pHI;)~%}I!(AZ zAFc9Ztz_b!vFd*VZ2`=$`U|I<-7!dKI1ebU|Fs%d^ z42XD9f=fIfm{x)d21L9l!6lv#Oe?_!10r6O;1bUVrj_7=0TC}saEa#w(@Jo`fQT0* zxWw~;X(hN|K*Wm@T;ln_v=Uq}AmT*{F7bR|S_v)~5b>e}mv}xftppbgh63+*wmEeK_5id$`iRS~;N^rq|h!-We#Pfk^CAeTf z#EW8aDULtL3x+^X?+T&Ebk!zp!9kDsA{dUIt^g1*4*;TK0N~>YbnFIz_0YeidF2NH z#54ey!QH#&nmyEa(8<=C8rJ+*>KT=4w7MNbW1%hXPLsP%W;abX&QC^0>GY(jN@#hN zA*X#B`%YUiiM6qMM$hy&3~pI}ram#Ux3go~l3XL!?xMQM(&#-Gqgywr+YGi^*{*KZ zG*P1Z@#IVW+VkIDs+Y0Z?3^alDONfc?W$!ibvRpnujhui-KaxR>dKXX=uc*mZu*f) zF==%X_c9WKUYoFn0Ua0S0pTiDwTj_Q_X)NA*u*V<*h0Zd&4qd$fiE{y)!gIM5?2?T zCthkRTz06Bc1hq%RnY5DT98`7O5A?ee|1;T`)y_J}2N&yj>Qkjp1t9gn3;7p7r4X_E{MLh=CI4DG> zC(ri+GL?X}H&}jcz)~czcENAY?gEkN?@~4@04w(DYb#_X0EnqzoE_l52*|Hnw%s0J zV1Q{Hmn%fzArini`*56q6K8;mS}pY=Kve_4c*MmR14&uaG;`)SW~vRUGAv~#E($;CN#9KX$V||N zX4^LqT060@w$^-C$;36t7Z;U>4E+4s20QBVgf;;1R1#4?Xo@bL6}d<`GHCG7ydEY0 z)#{n+`*(1PCfS?@GP@dl`h-$8_6K*DK6=#A-u`g$73vD+b)QXx+{!f-J_CX8Bgmin z-#od{IyVZpD#}sm-IL0juU(JMuG=#q+OO$ZyyK@c>O-IO?iyTi_A6zWOl$L)61>YU zb!Q*$sKGYs9^A~E(^36l8V-T0O&0fT>8UE zRWZ_k%hS4$p;y)ej+yg-NRIQKU;tQcHy1^}UTj^h3IKMQQ6?vBbzfhaVOpU)`_lNP zOX{E2nnzRTUa6#NQPtRyvqfu-^EXqCw%$6SXR;Rkhm9V-!oz=SqHrRr();X0E8(OM zOx27_M&(fxlx%BMr!w^$;uQS0GYogB>ZHWH)4$}TG-bzJ#I?9-9tJK61ShQLb~?h_ zNw3#RG>#a%(&1dfq8b3V`P0^NN9^9HA`h!SG)~h>vn^&tI~-EK&6Z$Omi zWwq1%VCU^T|49w;6k0W=;`s~}vnzoZRMlnbNlViSiL4tZ4e~Yes%D*7maka0?G3B$ zWQfv~DEo>D=1L({1apq96T_9UM9X z*jR>>sp0)8@l(-S8{=qKEapzxM#C*A-966v$dCnu24(&vk5-(&a2hP^ZL5QGdr|8@EyuvGS1ffaH?l> z_Cfk&Li}=S!NC&G;~ufuQ}OFliMO^)cXl~iaA@D%S^hfy{k-GPCFdqL@0+tE>9)_E z8(ogilb$QS4$;uus=cK;j%zeCZHCGW?#z%G$CF);&Ahu~W;GpSfqj|WnKCIw;LR{8 zG5J+H;kw$s#rx*((=|cUb8?U6KF(G5?(@DukIz}{wW-j-+svyiXTl%*^SpD@m%jAU z_2T9%%8t$DW((-nM-s3dmH8)c zJ^FQnNm=rMUfB+-+?<0%n%QDApJLCxy&P+mw&dV<2P8`-bQ)zP^+jxdJnfZntFi7e zylW{ITp5tNKWRTB&neF%&++AX^TO_|^ke7k%X~jZO|-3EykO-5M{a!W`1DS%M_$cY zYFX3WtVnMPQMmy}bq|)=g`mwa`asZ!tT&Dt4CP{t zxyp?iwKK?93Bdxg9=f{mFAv(P%Qm#5%zezHr_l+e_2k3%9RB4nX(z90W!v1gpsJv% z!}FEr>(6&_d*RlT>giT`%=p+M*F~dUq03E6 zvP;f_&PDCZkNNhLl=EYj6Mc^|yqB*kb|^?Mn0LRdpe$>0R_T(&C3zY5xtCA;RdTH) z=giC#9S@Zo3rm7ZHZi$=I@~i?3orL1o=@C#ZqvU8tW-2(A5F~DTdo%&J|&t)T1I-D zT6>_!deha{`@7IwMx9pOL$kJ$sW*(T@Y21~?mBXHxTWGPeQ`Usxop0HN}{0BbgPNkG@fi2mcg;TMf!lF>D*gkcA3D__TCP0vA1F(vJ{agAGIx%c0;S|-`kch2jb8ZvK} zT3DrCCD#C5Z(bkwkhaof&XQgy6Swd^e(&Q zFE@H%qEf^KeK;3yZM#m~pO>-lR`<=~>y5iD4!rt(sC!D~l&5=2j&61FLFzG{ozGuK zEFuSoHLA5~k6*ZTnQ}h)?Di6qpnL9l-9AZ$5$ETJy9Gq8zI1)_rPB%lFV(%(I$}1x zYSur*zmqP=Z<;j~7bB<=*9}JUrcG*dnzaIN-4XJbBELQ z>@hN9#l-!&Nzald@--hdoYHJrcB=c$Tl+?I(k-LLvMnXF(!&?YXUoB?Yqhr)S<{cu zU(-L(&3o=NpJqOI$FJ|v-B|t>|L48N73KW{lxr6ny%oIO?s4vcADurI_gfck%k6r% z|6|aqf+a!0-PMYB6bDocCzd=Y{o|hA9V@zL{QZS59Vb@*a$zw2RR~hkT+{ns2dY{P zg?3@>UHubU`sZkp8aC|QnEzDe?k^kkxO(Vy)YRTohcvI$k1PCEoO8cPslWf?arh_4 z#$P5Kz>|H$7WdJw@fx}|-%aH9*6mE+m%b?i^}cCsikh~xdCf;?gE;~?`T3EU=ptL9a{OOIH{x01N zi`wSb=fnP*K6L+H2GOedd|$Yr|7!o6mg&tAq6GuBH_9G`Ea)jHcQ0S_+NRs~5v@7) zp7n~sriZVZep^=&lG#_^AW*_Yga!rj#iURxgJHiU=(DsLZGaf=A_=fEu$2Zx zFx-|RXaW(4AfO0H76yk!SP)TI0>Q!pXNtgKuy`~Ei^iHEu|yIcPr_gjpC1MkHRuyr z#O9DZ?HoRbgCr{he~Cm$LZd@MLQo-QD1nHJ#uAA{GzN#p;gC=dq&SQ(VTL04V#5(9 zU;NmCVwQ*}l<)+6gw!w7Pq1EMWndr;^!4$1UO~dIf%xLj>>!HhP^J)#MPblCF>-U0 zZ59;tLrby5egia;&oldBKruZ`2%PNU<6gbR>%|e5L zU=U;?h6a!Q;Shvh?m)hpe>04)>YvVD!sCoC&NsGF%}>q1P~K0>q?!@4;Zzt|Au^PI zB$^0hN(3UhKoCe7$+FS=C+PM`npFrRHzte6m)=wvlhJUa(G?%{2ih?uAO*6uKw`|0 zI6NJT9nMHgBu1K-W1Niig!yoTvY*YAFu(O;LC4`pSUd>_IUV)#O<%Yl0h`AO`&(W{ zdw%P~&5h*D7fYCY7U*n8f##0l@z^9H%Yw;bvN1@ErKK4XZ^p7fTH$3$c$ocNHWUmbV4yLx2uLQ8z((R(95#}OgMtyw z@Hm1c(T~IQ^ZOFw2X4L#<-`+1`4l!L&!B7@u0390@VBjB6oI_q8X{zh#GrI*S{Z!V zn_r90*P0@=8Q$U~CQDj#e(ppp;7CH4BG8r#Wys&#n9 z;9#L#G=~zB$R@CmObd=V#|(odvIxvC3;kce5TlvQ@@Mk7Ae(~zGPf@c|4nQ6_iEz* zcoThJ{r^8V(Lc6!BfIh2%J`+)eqTw+Y!-_Ry&o*$y4-I{PW;jOi*>EJC z#$22aSNV}v=+Ym$>p*|K?fC8h_wdfXEi* zxMcHzY2~v zR*nk>M7Ai$C7TaSE5`)`B3qQ>lFbLEmE(c|kuAz`$>syo%5lMf$QI?eWb=V(<+xx# zWQ%fKviZQYa$GPVvPC&A*?eGHIW8Cw*`gemY(6lp92X3TY*CI&HXoQ)jtd4vwkXFX zn-5GY#{~l-Ta@FH%?GBHQS)| zk1XDln{4ABlyE`4%LK1tE`FjET|})}UN*x#M>vj(0TiWwy9<)vM{3aP6AH3*%wnI# z8}uqupVy45JGb7wuCDrc>6s*4t<3|C!>bEdM|%>Qu@C)Msr;qa`l!zOgLzz{afgd; z%>B0!>{)5XmiFEE{NK#Uy1TmIeJhI2(4Muz*>CBADQl_~sJ{Bq8Wn&>MMdieO<>+S WR;2pEgV&+C1J3qK>|oV-iN_YRt`qnQ3Oqr4mVWl~hC=)hTxs zr9_2_u0*8^r9x7NzC(^m`1VlIu4bL}edk->`mZ&!%*=k?=Y5`MzrXi+pLg$BYumnL zv7?6S3{?OCG@PC6Jiu?1^sS-!dv;8->U;K{;u06R-$me|tpf9)?2Ob(m}g=z zL32@@!I8(>?iG{m?Z@j~&xljpvnO(ww!5kN4%J7>tp-Q;L?4UWakKx$hGT&ZWqq&i z44!>RZqMsUE2>p4S5ZIcWaf^GRL`c&n*2Pv`fAmSR)kHI>Kq}UsZzu;5DyqB03RYq zq=km%%9j9z(0ghsKshb795pj`Xwn@&9pa3l2Z=kJ^kpRG^vg7Q4081dRcIgg#zy}3r zaa^tvfJblu$0OcMRvj7;s0r0zSWE2W)Jp^bubbFKjT3Ddj zZUT}zR7fhBL$Hrpt^!}H?Cp)1WnAN|vrx;NF^-X9gQyHUq>G8dPI}&R8vrsAw87E# z420H9EU2k5-%~tsHT=zGr6EIq|CYhF+FYRx0KAYy)D4;T>UappOxx&wahm zFTI=-g;^QpIR3-)%G>WQ(;>uMDMu*--tIc2N&zGAv*xzfyv-lPJFfS+l zZY$9^LhK5M3kjCj0nC=q+sYi#`=biot?sLzrIuvjXKZyis&)u{5<)0NGx2B8pDS16|~OeZ8VZ=E*GQ_roMacXIvV(Io?X6@;a z@l&Gg%O{wR523&qvuvGwTzwWla>|0uoP(YGWCDJI;#T*{`G$#EE@$RlnEdhTbbkyw z*2l@zs9{R{RHWvHIOnE54p$2p(=gI+(S-l3lFVbo!oor-muVU&2|2`jKr znXum!w(xpPYg+4-Rb~&DZ^uWCt0XhMFypyjb7bZVFFl%wrUGMr^ z9geS)UMs#2QP{Xtd3LL!5JX^9S+&`G>m6NvQt*4$R zH`_8RHiw%fpj-bD;XANh$@hxu6*uZ1?ir_7x0F@E)R?+Op{53b8oArnMd7Z_JALQz z#`Pwp$piYOJFRlEj}WM4i_E->JbLzXtd(1m*M2xGSv;ZLI5VjyV#hPBcMD!F&^v*3 zEkUza1m+w}I_Q(@l5=TJ9Xt18|rb!0Y=h`tqCP{q+<^pb~{Yk#j9G;GN&cDD!A&{ zJf(RC^IT|eXk95Dw2~7GPFT8Hx>n!0edp+%hC{eiEA&H5dun^?!_?+;e#=6anHFai zpJzK4wk|v2+f`h~k6A|WJ?`VRY-N!{ep>$AhSL1f%*mN0ixU^;rZ;e}ocgQyMsfBz z-BWFklo|_)gNrvYxc)labJq&4bR}L)+;m~n?g1-hjo8N%bM=?$M~Kgew1`WI&r)g* zcUf<`_Woc8lIv5eS^LPWrFiPC1y^}#o~id7xjNhuadc1I&h0K+ZXuG$h*Z6*r`IpG zE|T=FUHKxszBetkD7CUPtMO!)c^9uMw(0lV*xwhV`*sE{T@j?O zj%lWDHX33Lg%8yMnUQl9xQg4OY@?Qs>;DkG(ctnPYhok&@50BOw!1P)Y_)CUx8!eW ztH?J9xc=wfe1pFBMjbi{7gE`vO8$^ER~CPBbBx~BPx!qGk=I&7q ztJJUL8Y1h=>*5|!SD4IN-0fsS3*Yx=LK!Y>&NZ{+rfnr#=V$LNbJcKtno3Ncma-le zjIknKL`UyS*t?dJV?awR=Dy*+;;g@w$Bro+yvE;o4ms<9@{Pcvy?MX+!c~hYCtlN+ z89y{pF66SkIhXHjzezZlo4)W)=k21KjeGHj-~B$+Ii+&Si+#n%x4C%3^?hDl%v(b! zB&`i=RBh4zZQ-`1N_nL7JBm$$AGqaqdM6b`T$~q93yfM-adS(>S%tv2YF?^sF`M2t zJ?vcR=7aQYKFj#DElrQCy?sZ4R-;am_U1>%O`&aiv4WeI4>j#Slbw6DgjLI_=XAV! z22Wo;@nBBUtE7p1jmJ;UXf!W9)7ksCeIqjIj&WmYbTPH$*k#iBGIr*Tnmd-(^grnD z>7VH4UG-1TG9G^5*LCS_DEk}x=Yz)OWqkwW8-D+%$TgId?i7bq&y@b<{>v}8-6q#Hym=P>*|Bl< zq{CQ}Z`h(9`VHQbjxF~Rx!tw9(hj6;ia>m9@@qU=yrG?0)4XPq;N1mH$%}gXp`GoP zWtKH7y3b3x3me;}dY|`BIZ0d{{6_MIG?;kLt-ADZX-YxKiolYt@QY_RaQZs*((yG< z-(L*-YuZr5gLHz`(~CXfg1&2gz0K2}Mu_GQ)Z8k495TNvzs#*{^?RF6+sD+Wu@9`5 z4>mn|*R**}c}PZ2U6W&;lbO7HFe2#N0Pde5-$gDJU;NI{H^ZE#;VGyS(k2vnxR*{U)tYU z5z-W*|L$1xB)8U$u+7Fp0UuBIdfv_KPt;9J92&2f-1C`f25$ra%WfXsN8&?sB{BuU z2nI{w&qjm>3&9If03cb13K`5mwgl$S=JNPfhVM!*8^U-jD?@J_4Mh`D*#SJKa1q-x zd@-FF9>^rH46Vtkq);O0Aeb#-z(RwA_+nzHmEo{oB6uuqMjFC~yGR193~i+WVLr4a zFseYrhT#x6I1`0I!|((I8i&K%LJ3d6he`c1`~~YIR)&VsK;K?p#uY657KktY!VaW}3}pzBXaoxR3nLm$wpnoS zPc6j~`}N?Nd>PqK1B&TkLN?NaEf%a3G1>O(*?fu7&rX8H{N_ivP82lEhs8v)gV@2K zi5NV2^iNMg`1KCtoB4OA@lE~9(Mx!o(aHJFR;u}>89S8s3p1%^#B4YfMrMcv<{yzN zVlyNH5nUh%B9CO*==~FT`y|aOm@$pPk-@Pecsv%7g+pNp{#XWBN$P!UBV_aVRqsn~8%n2sjoT%jB@&1PmCAV1~uu zEC~J_hQI&U5I=GALntSn7|f@zF?j}N+i>miWUu|c^{XO?H(W!643U^EU7A*gU)Sch zqVuh$NNt9fIFZ4WRv$7`n!s!p3He>?=xKek{9?xYaXSAQf)W2?%zqstB!JDAmHs2H zhI{?miCDmqgfK*GTP~O(|7>lJ`2F4x8i0h9*6SeN|G`v<8SDRd6M^?fv)EV*797t( zgSlu9CM1D{W5OADjycB+g(fg@jIR^@A3qVJnam7e@VRUj8ToZ=UmO0D=I)=>#Q*Uk z`my@|e=eebZSF=^R^V@^OGbV=C5t^ADKKYysyUiqZVtyF&|}?<={LrY^fHAA?iOI> zVhmSl(B_9WXn!AR)el-X+#ioYfiEOl`uW9ltQuBZ+s$e1tDAkAZ} zq}Ni!VW^(qWj~t?4h`A_?Y)E-$`10e-?Y85G4dB~O`EMSKj_BX?3h^Zm0s$ghl;e`k2cnhZf&h^%%5ll& z1JTNHL4e2><+xqLt%<0Ff=qamnTb(aLc_fXEi* zxMcHzXyv#dKxB(@T(bEf zR*nk-M7Ai$C7TaKE5`)^B3qQ>lFbLAmE(c{kuAz`$>sym%5gz}$QI?eWb=V&<+va~ zWQ#I!sg6F#%jSbm?}mVn=^8Wyd4rGm!kA7TGyn*n3jmSP0Pt}L{O$mNb>P3HdE*BF z#AE=_5$s!i%>nG&?`&sF4}J1ylGT(-m}ZRcJldJMo4UP#%L@%sa{fxha~>&1->i5~ z%g!UT6RCD1tN;Ji3!2@0MZ14~TC`$iOKIooty3_3)8;+&l zo;hRnn*7x^D*C>DC-1#lQ$3r*Z)w?-R*gp`&elshk&dEdr*usZ+UV7oy1UOZN{u+eGe7D*ebe_3ezK_ cYI^m7!tI=>tf>_hAO^tMez9Ev#c#`h1N$d0Z~y=R literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_hair_base_3_white.png b/Habitica/res/drawable-hdpi/creator_hair_base_3_white.png new file mode 100644 index 0000000000000000000000000000000000000000..e393138df649f282b4e50a2df156b4499e6cd45a GIT binary patch literal 18367 zcmeI43p7;g+rYPUkb4)Eq%-Iunfn-K8Y45VxrGtZZOrT$lgkV<<U^X@%sZL!N7 ztyL6fDFOhXVrygJ0)1n|Zv{E%(|y9<(a_fS)MhCIE=3V2lOevluvDw|s{s;DG_A zaqOx{z(XW}v32Lz04L7^6}9S0g@A%GfN_qAS_n+s2&}!TrxyZj+Yd~$>UF2QT~wgn zX#kPhUq~sLOR|jgQa}dEySt<2=-1lLSTv2uoWM+7f~pMNuZfE!s6FYs2>_W18qjF_ z219C93ueD&43OE?=-wv~v$4$DUGnHrM|=CjrByU9=5_Z?L)^+W74Cz6e}_{(54?MF z;o00s+^R_Hi65R+-t4zOGP`ciq;1~K&*QB>pH&+EtbIqf%GSHY!(dvQ^OV3ii_~3x zxFfo;v^@*2%xf5CKWjDoBui~I0#2@@%4|$P9$UqdeQ&ow-9uFIYybdyOZk`X>MO`b z_-uVz7d-sNY|uJ$9uUE?-4h4^t1afD7}tx;Y7_v#A~Vw9q`6lArJ05ma^vtx|L8oV# z?jmM&-p=z;YmBGTYcLfrX3FEM{4l8M%d}G_hLaLmH%{puSI(=Rb#nP}+0xi|th!Ud z6Q@L4R!kyJ45lHNbIff#>^&SG+8jg7o=ceAILUaD>^A4h1-gmH>`u==Kl$&fncg^T zw1+Cyih;OE2+SBipx7 zp0w8xvFK`4dwTojc6_^5yH2l{V!HQ|z{4M0pXs|?U$<1VL%oC0AqS@5%-s&9x;#FX z#h7dqzk-&ZRqS%YIr`XC!unLwt*z5-?T+Lh+;?Y|&kUad-ia5Y^OGO%o8y>#+r8mN zm-UO}7qb1q$|~D6w${XO^)=IG%FpC#2G2Z^Vt-Wg&Q8r52F4isDy4J3+J3&9he5Hy z9~ueQ756ROH-Dd&0h*DMdo;HtSIMo_k88oOxD$XOlW$82{BS_zIH^-VJGn1>N6WM~3!g32I!drF z!GbG&bCZ&jJo0Svob#+-l@klPv(t~3Tb6o$ic~ePS-N250&8x3?QiLwu8&+FXDen; zcQ7TtD?sJ?9?{AwwFtf#klmA#aba~thCM&KCA7Tr%5&wK zlxt^Ft{4UKDcb0ornk=YRhO60k1+Q!lb>!&D5<9$x@YyLmD(;|^~$!nZT{8%)raQG z&DWW4=kU^@C)LHF)@^X`;F2}u@7*aX`N{g(pt~1T@kXvu=rT< zIncJSeZ^7Fp5n5As1+p7BOY!mRux(0r{~YRUz%Ttj z6}<~w^)#&EU3ywkT4ndKrV~BH9$rs$^Ita!e=W@L#0zgDJK-)tmZu0YF)c}=8ji*&wm!Ix__ujGzoqS8bsdQ^Gz2wkE%DFNy`&#X-#b%7djDE&P z2C=8%@fqfW4*~T(S{uvW6JFnI@+un`q+YwwHn;0T(kK5_ z`Hud9-8HfevV-z^s>KgV?%vaGFlD&J-(U2~TD9i)3q$E|f{`jj6}LYRR6o-bScJBB z4NPhsn4>~&+^}oo@u%{4e&3+Y)kd$QrS_&;rMael^78gN?{t$|fB$7m*k|je-_;Hf zD4wB9`xw`Fja^&rByxM}cBSu2-xQAeyLoNX!QzdbtlHLfYWz3n)kRMmEQfb?E-qVK zyR!G3sJF1GW2*Z(_tX>QHU2L}FDXNbcbsZU50s`Bl&thE=?N=8vyn57(EUJ^5u$Wo!DEbelh-KaRd<<~7v( z@J;jPbrr#xef7=O19DMY>xL5E#jDYOi{BrAW4p@sR~aT$66u*)&|uf+YOpONN_|#xZ*t;A|38ilzN~nqd7`PhvU<*iYaw{->i*@Qx-SJc z2W!7M)T-vx{s&^S{;<#Ar{1~V&i<6BnV2{{Q8uOTGYgMw0)WN6JcftJ!@-`+;`^hR zY`!;$3h@^}7oq?_F$)neS-zkM;SF+m0j9cdN-ydncx+Q$cOwUkgMbeD@NB|@K-Vxw z1}n^$MPlokQ57j6WXOR(C}JW){QUxiUSlo=(MT~S2`I_pQivuD&9F`&I z{2&lvgfc?1FgPs2n1sR_85tYn3=udCmVm}!(O5hZOCl2pWDExJ<)uqigpMddY!2DQ z!s<&nNHW#+5s3t3G&(pq7!{01@q@T%EQv%yV{m934hi)@3PS@#%n)RNP;b=9S3ee@ zkQKxehgS@fdYhI*g+K0Axr@pi^8CPVdUT-+05Vn zrS&gY-9JIMPvWdX=sPf3ya4e{)j|pyZZtOIWBx!3rU;}$w#G;d9*H9` zu-K7|G(lp-c{$F>Xiu0A2Ppg5OcC>YFUAZUj*P{VG1&25zUvG3!)Nn2q5sIsSkLc$ zI5?1P1B4=G01LFWph9Cu@px=99&3Uj;V?!>CILr65=@M|kxUaj3&|mxa7>saW01hX zjtug9^B-JW@LB7{sRX$mUHWW33v&N0LCAO_i9;lKkYx7&t z`BqcJHX}=%%w&nH50xcOV318gf7d#8THh?cnDKs`&VPnr)c-j1U&jdc0RtqZ|EQ~x zUcYuCRjil{t)CKp5t0=N|PSmRi}P{#HUI^T~U z6}ni{5Vn?dB9=rXB5^2aYa4SjuHQI6;>#2=v|B)x zi#bxIA)6oC;Qc+sRo`#@NPlA-26~~f;?FOpOSb@?h>H6X4c0u) zN_;Iv9)ao#UG{@iXlU>zc<*Jr5YW%Vf(PyOLh+tOF!^EwSNzn_^H+xB6kiNS(`nqr z`AC%?ZG|rVp}P+Bx7&^%Hh^zC<-d6_HllyiE6kTP2n>j1QHo14ADC8(3kF28D8(h2 z4@@h?1p^{kl;V=i2d0(cf&q~%N^wc%1Jg=z!GK5>rMM*XfoY|8}3vCa4ToDkamQ7SQ zh;prM3~}6*=(5zCrQAY$r@PnH_Ip-d+-u15kS~F{nncwq!zQ1QbpXc}d_TIDB zwrhopotpA&WdH!w9PF*#p-*k`TTveR`_$-82K1rCxAzeOfXa07TLwruG7|ulT{%?h ziWUAm5l`sP<0BlXR0LnZV{rmO00?=M=E0_Ubk8s!c=FcDF*f3WBhOt+5#esNJ3=#I zfsvlll;yE{M;~grRZg|Bk<+=B5i7fQZ^RxgH)GW}Y8UAsAZAL^Z39N#UiGjaL7Og zcppwCFV?S6xCF?A+*VNpDx6a*Fmqx?G+tR9UM&-`Q>H?cu*6X@LK9dPw%6(;u*_B_ zA}x7=2aq8LtgmDEwF4`V!1{&TUfc#E(%v85A_Mpy(9@F1NB|Ji!B}g+e<_gHxH8TL z@Wud|EXQgh@Bj&59K2Ze!0GcqMZ*-8LO@X!z_`UmEdu1W0PC+A7=!>j4+EOEeO~0h z78gwEGJ;4QE+m)CBicmzDk3*3czL1b8a6m+FV-}r|3pt&hN=oZJPQ|z*Ld20696(2 zw4mAc4}~nGn2pWReI*Ycc6M|;SYB=AOTXc@b(meXuEJ|5@IyHH z)4;o@m!8jy#I1?6lY9TP>gHRg6LT8(EA8}aeGzZ>>AcFwC*9ln)ee3o-bR}3ZqqjI zwNBa7k2|5i%WD6ktMi*jn9tjc2W2U31mN@rip-V-WY!vn?B9+Hr+AAho(}*(Un#Hh zj-jG#g#V6bjlm;tEQahd<^vHdhy5D?V6F8$6zxWlMXe$LSZ72Uown3@TRGFXLVix= z&#jdzpVpi1w3=64Wi`c0nHe!huzpeAb}Pf^`qR2b>(O_X>EbKg{G${3>ZmHu3+m>4 zjgNH2^h(3BNF_PTYl_q9dXHjd{NlU~_9|*0j(V?GX)iZz_dLY)SWP#5#{_~s);*4f z@U++MGZ*|sj9G1aF=6R70Jr^9beSFYKxCnt`5o1B)RHW-**k5IsoY|Uuqp8~GE#2| z&dxU9V|ujfR<6Isqj(Cn7E|$Zrh-XzAO=-)#p=uwW2Hn!-5LEn)!drdr&s35mhO7T zXgm`vH!aepLdjGv*a|_PYiaN8Gc&wB~8ew#{63gKp#ORJ{FcgT(8P zm;r?f!~@2N#n+-b(mJkmm~`lL==J$3r}-`0_{V#X=Z5Y#HY}gjIi(ZdDGw&&EIp5> zxIfN1N}EcEUuBhlwAlTWTTIq;{H7FQ{f-$9jwkYu9lSl;U)z6xbLyq&;?&0n=ei`_ z@@lT@wtJcMQub}Is#>(xj@nqZ;jGk|3NzWWf@hveb~-uh_U>7=G>jScb#m8Xjl(=o zZ=+(PU$qi$C?8yYaKS+xBQz~L=VZ>492L)g&pKLs_F9jv1-70h9_`smcMj!x=A^B7 z?V;nr&R&`olf%y9(JcN5_ZiwH?{mfJiYxUGw~RCE+RJJXDvVi0A;x+EYPr#yA_>(C z&eT8rb+b`v@{n%nZu6Y%qeQC7aucs2_x=Mc3x)RNjqi_$T$H*DGn4wmvGeAp3Jn9T_%j2QP z<4onu8P4XUcLk`NfD<}LORa-1b2EFB(=V-!NO$68J_#-F`Z#ARdWbd@^fB|DovOEd zk?K787S)ECY6Lds3+(L=}FIaCX_UhkKeWZ%~oR%r)G8gy!N1) zpqk?gJ$)!$9ooefE)*q|CcbJfBj=hiTO6^L$pW1eQ{i={v z#>H917eI%?j#VdpdW*}rQLBhPC%ipZttqn2Ps^WwuQb0jb82RZOQK6|`aSlQ(|;9T zFU~$c>vZP>`Ids>pyI7`wx2fp{MCXhy@}hvsG5`Jk$T&Xt<5eG?&y!*y~}ZX9V&@}O4X@( ze674=x#-=-HP6DD-=(D%rB?N1wVdiT?d9~wwElh*|NEkJ9~0rNE7zz`-8!2rRDM5* z324g;ccr>Uvd?uHpc&`{ul)O`&z}g+8KA$>ru1*rx6yYOL;<(`ZZOD)Uz z?fKg~EA#dIul>0%UvHo*xgnu}qaL*){N=q{3iKEB-B-d@7e>WIc|}|7<;Qx@Zo(!J zf}2{Y!Zz!V)`zU0q_VND#8b%S1S3igY6JO^*+u+Ciy9Qm=jL7SG;fDM$2mllQGqEp z@KW2Sp8lBUY0p*Kw`eD$udU&S9&M<48!X`Yn_?eOR~yZB>9aR-4%`1{LKz`+-c^$m#+@ZQ7iRA(b5e79oJvZc zk+K;Pgfl0VV|VON*tgLtN6$I2nEi_Vg0;CW4~!}tzRKNw9zFME z2kkBGBh9q8`SCgW{rB9aUY#vvf8+nW+u~a`Fhse2sl`*q)A=szE;#5gSTtZ!uq&tg z{h`62HTf<<8+&SHn`MU-4AhJ7m)yCl+iXsAkH5G0wVitHFPDbX-UK7nOw~MpJ5ux9 zfNvez(LJElHZWI>^l0;*EqTurZvV1bm#vH5V3pFBVw>ubGU)5)d(rhKrRm{`ME8ufo`32 zvxdiS%R~Q~F>>#2I??=bd4Cvh;OfA;wi%DZ1q+87>PjC5FYL`Pb1hrA*@paK^(XZ2&P>96m7J{MfPnpz4 zX5)f%?crm?bp_fp(BbdzzP{hkl-zVQsV^z?o^`6FrmAM{rRyOk*tKt0 z4)#+VLx5o8gH6hcoXyZe5KqSgzy8|9Im`^Glzi41FUD zm@JaJwe9EOAj@3eUnJs_(CFacU{tUPiYH*Bu|y&fjlrRDI3&~qDGcR`=pjh1&|oac zmpIm-kRjmkMI0U%A&yJ;<82a|>+6dL8h?GBR}g=EAg=H;JBT7Wgw97}Q5f_OM9$8V zWkEsTRSHEmo1r85JhSf(D5Qn*L9{z4ln_?BnPfgMCUR<2Wtv6cNB-iB!LVTk%2KKBF&hl7$lzIhe1L%0l9?Eq7%)S3{$M> z*d)J}e-ql8$JiuJB`EaR)@Sk~L8OT+@fhrR{a8e)fT$tjy5HKbfkU>Dwi3BDz7Zwvq#4W)hi6(d) zVF}TXMfdajGQ@Ynd^40iM+oIp=%hS@vTd~Xcz_$fZvEm2<@A!rTi8Nzj zp|~>NhEl_%ekAoh_is zMIWuwkmj2+TRR^fnI2=`0r=wWH(&uBUw7x4VO+RJ-Hka1^0P0So0*6 z_*#lI3e^L;><1~()Zk6<-YYmEV4$}(2Rhda#pf&>v=XBlxZ}G*pC1V)IX(-=(rMDg z`Dm3NYlSZTp}P+B_-)5GCxG!Y<-hr5Vn+XFR9GzOATS`3O(`zPd|+NFE*KEWrWBWC zJ}|Eo7YvAGQ;JJ6ADCB)3kF28Da9q356mmY1p^}4l;V=i2j-RHf&r0iN^wc%1M^C8 z!GK6MrMM*XfqA94U_d0BQe2Yxz`RmiFd&jmDK5!;U|uOM7!b*(6qjT^Fs~FB42Wb? zic2ydm{*Dm21K$c#U+^!%qztO10va!;*!h<=9S`t0g-G*Zi=Neg-O=Yb}rh!v``=)Toe&*pUf_G(&qwNjkErnR80M{9X( z;O(oxKAQR*_SUVwuWee4@zXvucC@3ogB_kuGM!xs7IwwA;}W*bk6W`Eia9bO3&fxN Vy3#`^}|8Iyi>Iwh= literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_hair_flower_2.png b/Habitica/res/drawable-hdpi/creator_hair_flower_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f6dccade2278df4824ee73b2cc7174b17504dc60 GIT binary patch literal 18222 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_hair_flower_3.png b/Habitica/res/drawable-hdpi/creator_hair_flower_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d3ff5931b8dc95343334dbe85c531f053cc0fa65 GIT binary patch literal 18221 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 Xk@#~1J!hxnhyZ(QXR89sbzA-$C2;8P literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_hair_flower_4.png b/Habitica/res/drawable-hdpi/creator_hair_flower_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6bcb69859787d9f440d08a704c29d2cd078e06df GIT binary patch literal 18219 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 Vd2LOJOM*ne+1}l*(01*X{|2D7=eYm? literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_inactive_pixel_arrow_left.png b/Habitica/res/drawable-hdpi/creator_inactive_pixel_arrow_left.png new file mode 100644 index 0000000000000000000000000000000000000000..813b25a8f1f54913e4c4566e622cd8fbf35fab38 GIT binary patch literal 18349 zcmeI43pAA5+rVE(A(wQMB%MJQ$=nTQj1l7+5=KV4y=LASlgo^mDVItl(d8tmh)7qt zq>EBQNs>}T7rEsWk~;Jq>gZJX-l3wmnswIqoo{{Xzt+rJb9wf&pXYh^Z$JCl`<=CB zwl7^`uckax82|t^M+X~s_?;?wDk;FPlur#p_-%r~!CM3XDpMs-IUwcG3;fgUj&fnr_km^sTj1T;x6{zPpAJ%H4WrQw5 z|BHKr7wc)AxqWH*HHxK5ss|j1Zlp-nEbG~me~-RZUh%9QvnWb=jsTdXl+V@`4d}}O z?<1(xg?gomR{^=u2P#THsY_}pZdUA&`YY>$E94@#%9V-}%$$@WrvZz?cUzwX7TL)~ zrX|nw05Zk_YpPhjZNO4Aux9?|7Y~5QwD$)$$N@h4bT#BM5&+axD9#4(GY4{OmhG?w zm^fe>$ElnQJV66EM=y>8aP|^VT0KeSJfNfs;N0S3769Wm0Bb7s^+SQJ2Z3pJyMOYbSKkohSWq02?pO{s%cfwZR<`?nypDw8kebRZLSMKOr$TXbR<~AjG zw@u2fKEesT?bdr2+?-oC#D3mt^iiJHN&?QVrO9nbK%ZL4lK;zT{v@Wj^m#u3^cL~2 zKQvI1kMxUvRueMx#&WJAuEpI6SfK5h};aMx~x7TMFl`71- zKEC<7%BM9ZTdn7mmswA;R%S=e60TX0yT#gI+r6_ohHJ177wH(6y7_HO6imdFd0w7q zAyEGSDy3gHD2|#i&Z<&rDyZ8SC+E9^slQuE^I*(--RlnHrtF-9x*a#oP0uNTP33tDbtx-?T)J4XN&PE@zXO> z?+Y)?wAf{Gr1O4`pL%0FjeZMP`f`RMu{;2WskmW%&dg{+BCG10Uao3R#muwIa^;J* zzhl*$3mG>h%C>ZZ$+!?}6gb<;f$7X#^2Fg3YStX%$&C|CC&+JgE1R#Ec*^O*yepIc zE}!8`z{fHjjPxH*iJyv{v>}dOZaQbmb~<5x;htX{&mCvfO{uf13v$=*GRjIdc9^N3 zc)OA9e_oNi&j_`!GNwJP{YE>nUAtYk*GD1_a4s;-0!Sitkp58!?;5MN+wu& z9!qg=Idz0FnH0a=`t*?k_cLy>r=}XOOCjHjp6=*$;`Gt|4`%vl`t|e9ycA!V+_Hc6 zlBD}ybyZ#VFOy!%zYS4U+olnHD~@ZRl{!Ol23IR&#+hX2lUfgUYTaVsO!2RiI}fTK z|W7L<2+m~8(O+DD3PLaqg6_9UlYT@{(`%+GupR?_)l)+X!#V<7ND<~w^; zrb52z9EB#;>KW9Vq+mW(2YajOPdEC?8;j^C!2Mv-v#kk*wbWye?0&OT-^Hs~(Ke?o zup+SH*gS=Ky7Qb|Ub*z7xVsddTyWCd+1&Zoy}S30-g|tIlxl&mCv>KErq-vnURtv} zbh%N%se;RpzD7dhX+*(?yw+GYgj_F3CxM%)N2; z&w|?pS(miVc05sN$}0#g*aUKYHMy5==H2K?EJ@sSWz%m17K&=I4HI*8mg_`_E(oVl zmQkLjR3GZG+;sEpfi5hUSu?5T39+qUYSn^rUYbYh1ADF}w@?(_7q@e})0Qes5)G58 zUC~lm(!N;yE_mg$@Va+tsrjj8-KUz)^qBPUdSaUo-!(qGAl;iNx__gR{<~X8t)l9~Gc*RS%AJ*Rd1JCmyus(BM*mPWjMd|wfK0q(pJp*lY%HpXk43xp>>!q zN^;kd&r^fLnv~l##xLBqOd*$gc}Ia^;3L5Fj(%AgOpgFWdJC=Xv+QH_17qW873)wZC zI!@P%r|5K_i3hTiUL;KnQfp|upw_zVLifABY@4u2_Y9hfq6_GS$F5N?7ekr1tM8dx zGLAFeGCnX&dg@v(g7xo%YJ0Rd6#r%X$D<~n;{E~J?W;|ma-J@aIFF!@jvw>;E%UZ# zcfCLGF>vMSC4s@+x8&>O2Nd-u7StC$e56xn!Eld%yzsUC#9O~!9ZY)@f>tw8^Ze~l z#dCduO;~$Z|Af~5*=m%=^}9CYK2v<~>v|oo4tA||N^go?sz=I4A77sJ)UE9zk41J_$chl*123Rn0S_Jo&Q+`#GY z(oQ$6Zh2c0_UH7W$B)v<7A+-x;r#xa{qI_*w?qi%4^&qbHH6IXIbG~py!!2;ZmR}* zOY9>{pTXuQZ<;r+Ee*-&t8KRLSBQzO8BBN=uTCEye=xpko7%S5>1H%C`MITVpzBj6 zy@p*gFI{u+=wMZz=5%bt`$w1(YsO%-Jov#;I`CE{1T zUG}m2dPsAK&YNSc>aOh@QJW2h{Qf@o&f|XO$3(5f#G!HW$$g(#M067XnD_D+Ofl2N znZn`+Vn8y*EYI^iVvug`OA51?M85Lw-Dm za3SOozJ$RF_h*sWdX_Y0YA6ME5D1AuRA^v8kcbj$p*QT80)Lh?WA#wOUBvztdRCHv zD5lF&6rC@GP$Ucq&B77zC{r>9Pa>I`5{ys;9NrjTpBTBg zNH+@%{Gp{tY`Y%5lFuXiVL%ZhOaNisArXI_kOkSUhl0fVKe`Au>#HBZI$^*tA2tgM z1wetYi3q-U{0}cd@Z}EVtNAyV@m2lP(TjPU(aHJ7R-*Z-85GL?uy?=slpCnm@GH?M|ydcR<)dDIOX*4?Hqy8WpPz=#vTT?WS zh$a{_@c7}3G(+Pgc{#?(NKb?h7dZRbpcwqtiz$OZq!0-d9BHhVZ~7wr@Yy_0*gx_z z+VfiK74qQ91O|-hBN+=D4hE5ML>$B-p+Pc98X^FNB1p0{E%d&u z&96o0YfX{Z3@>pC$dXha8cUME5SxnqrgikPzFK}Z<9$D!{|v#1|1su2j}hVr1xZW) z5m&>#e(prX=ZHfV}PzIZldY{o{L za`132n!pK3W|LTG(3E4sA>#04776?^(f{!iF`CINKQM?3v1!;ZWBbzZpEP&>tS0`C z7t#0C|NnCl{cCeKvKqgwj9;ql_mz~&W>GkNVIU}`@d80EgcSsFso2rR(R`tf?jdx3 z0AJ|BXG1i2tN2m#53S(uPM3~+bxISt+gqa?ZRsX>vWW?rfPuHRQ8#1yjqxKnrcmJB z0y@HrZy zd5o3hEJYcH>H#17AsRe1WD~OYQeG$&z_j7Pd%Z}qXPLlb8n!_yerV|ZGs7{8&xRxE zH0E$VT;)ev;iEr%*Ma?d+wt87@O7vBH$RMy=->2;@Ffd^03uzK;gZe=p_So60Ff@r za7pKb(8_QjfJhf*xTNzzXl1w%K%|Q@T+;aAksw{F6n#_S{W_`5b2@}mvlY| ztqd0eh;&hgOFAEfR)z}!M7k)$C7lmKE5n5VB3+c>lFkRAmEl4FkuJ(`N#}#m%5Wio zNEc&Ww;PPq>D0K()l2?GF%8C(nT3A>3k4c87>46>7opmbUp~J3>N~3bWw&& zIv<2qh6@2ix+udXoex4Q!-W7MU6kRH&Ih5D;X(kBF3NC8=Y!D7a3O$57iGAl^Fe53 zxDY_3i&AkZkN%Js3W9&V8v_4K_Y$QZ{__t2#d2_W0f6wi01z1s0Dlj`?_B_}4hI0Q z*1-QslMDcw{JpDh+QEGr9c`=_p^bkuRZWgYO^bOZA~wul2I>~DwJzA`{!wS;JpTAE z%u3eM!J?a5124*E1>g7Gm6A0(B{w}wj_AMsL10Vk-m8WF8wIxNdr}G?teb&bQyM9^ znh@*LX{4i|IxN<72;vX5JT7_bv8xt@wekuZAI-|!6D=O;EKj@k>nZ{Z>v-5FYLmeJ z#fhy8)P^=D!jbvU1e8rDebZWuX4cHf7rkt l(^hjKwfv|VD8XT4_2e*=YoB*_2( literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/creator_inactive_pixel_arrow_right.png b/Habitica/res/drawable-hdpi/creator_inactive_pixel_arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..2485fe011fe9e520aff8925da86b54f31a0b75dc GIT binary patch literal 18340 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 Zz#nB6t!t{piSXnA2OAgbJge0k{{#KZEwTUr literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/icon_body.png b/Habitica/res/drawable-hdpi/icon_body.png index 3d232abd377894458ef0f12547d9649588ace5e2..866d24303315bdc781d1782d7614c16139788da1 100644 GIT binary patch literal 1753 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 A_y7O^ diff --git a/Habitica/res/drawable-hdpi/icon_extras.png b/Habitica/res/drawable-hdpi/icon_extras.png index 10a3183e62b9f2fadba56a62ab0db4322302a7d9..3e576f747a77b56280da5d5c2e960e9dfe99c9ed 100644 GIT binary patch literal 1323 zcmV+`1=RY9P)Px(e5nO%rgRTRhPius*cFJ@{w_K@M2Nn{Ttibe?8gQ1{-6i7xYsZY|2 zP7o+kLQoI-<_GpL^kP9$+Cw==iJ+yRrhPd%I%tkxfgboO90|Ovb(7 z$JuM`wbuT)d!LVe>*|7p83;2FW+2Q!n1L_@VFtns^nw{E)G~%*v8ecQP!HGPXrWMO z<64uD_Yo2_z#wRWW904Rdhdiz41f>dZ?JL@!yZ{do8%YeM{Pz*|W< zbJvmh?NS3=%A#ep8J59&uoLW3>%jK3uVL)NpcSm_#qd5Xg-_ucSZVa-%xxq4hqeXu zBk-(EDjWO>uDomgq~kEdb)tM8Ua`K|#(?&!6-{ted*9|(C;Gt_n;HEFc&uAM$w1w3 z(61pm3uAr0*dK;tAo&f(`}}01u0MPMR(501-MD%oP)q51n-P6G^iRu(PhWTe67PuA z4}uqAV1}H!1Fr=uhcJvui;vYS01kr{HBi&DHP%p0g+45Xo2GNE=+9?LDMwI%D@yoI zrUduMiT=z2-MwA8j50g13pl(Ea&+Y)%B;k||EZFGJqPyja|_!NZ7QOCesMcpDu2wiYip?hGFZ{;*{J(uEQ#HqpF`nWI{@@17@z@eC&L1hY z+%WcPRNXE096bxlS4l=vq1AE$nkzYFuEOyG4?vOPp=!1XFw0cAp4qu zFGSyEY< z;meEPMdNqQ=VyFURr1E(Wgp1pnmS849i}k5UlThT^!0KH&Oj}XD8jReU9Q=p(!F#5 z<;qL0QYt^=vDszrajD*9muu=LRK_OsfX^dO}mK4wx8h}(4DUh ztW33roO*m5>=pM+=F6N(V`1cMhDfeccon*B4Qvh229fB4pkFLm4uu@C4{IGO?1@_7 zszav{Ir5f6h=0w=r{Y)TN>73M4aR?k$1SsoTsjkW&x2bv$mOPyZJ9F~NAiq-lP2FZ z;}%o#tq1+uk?2FX+W}cDC_y21O_Zo~{Y-<@8H<*QE2|Rnc&i8=2?yLHly`WYjS;_3 zOq?caqH#-AiJ1%T_S4Gj`dp;&CRo{oVOUybeDozVAMBCIDQua(NAVj1`hImqClt#d z^~ez)Ezw4B2Z&l+qyCoCX;=D!*7zxd{Hvk@+?;I+Go4`d*bv{9w>u1MbZTHIrP$Yc-TtXvM~H z(!uga@CT%c{#Mf|yFGTOm_JJe`E=LS%Ca{_Ox@%(7WvvGd#9|@<`mh3%#p?&pHXF&Q!R3D<7q4vG{a2)o>_8x{HVFtnsgc%4k5N06E hK$w9r1HEnr{sX%tP5v9;$ua-{002ovPDHLkV1jbng7N?W literal 1261 zcmVPx(r%6OXR9Fe!m|JgERS?I|kt!Fdg@O{an$iadmms7Gq0u55HPJND5C~cbF(JJ1 z9rzMF5W*t}G!QXqi6)pvjRZB?Hfq{xHHS+I1PYXLQ7J9I|6$K&T-~<2`?T6J$^Wcb zvu0+^tlL?8<#Q=%czC!9)epg(6ehRPY0BsG=SI`T=K|UrLFH(AQQIKpaeQ{A(2Z5{ zF*gcBAj@gq1j+)nKdIjW72wIBO#vMuph6%oR`IzI<|FWQQSj(z2=+Rd1;RFIeU8sF zV$#r<2@*&hj@}NODXA9FO=qYKEAf@!O)wW2_0hi9D!#-d4!;bv6)2+QI(aLflGp(ku-QrAqDgI07e z`*!2edj?*5qEqPIe8`UcMOPE?E~pJ!d#Qhnt@eB(jYtq@T4Gv0&j%JiP(O(?Kk|Xf z8xl8>B z2HNOTj)+)IY2TsjOd5g= zGHv)p&aNFk>B{ypa_fHp{#R#H3R{D5e6m^x{hT<>rFb=44lUhXeS*3a|7Gn~qNhW_ z`tO~<{&mHS6MWp4Xgq>8u#-{FWwx|z^=+pkT^HkP;6EW-A`{tJeEo}@?oQ!6v`Jx- zPQ{k!M0SwoNh6Fd>B~LT$yB!l{iQXNBWI*L;&`c&Wjs-X>~pziOSGI0p5i2nzoy3< zq4e>gZ^;*&t^OYLH*pT=t6g<{2y0KS1s04-$g)Yy*O-OXQ-UWw z5Pk0j5#PyR^uX_MZR_DnN)Vrm@u8Ojqh4F064axRd6{6Vr@uP$OnDECHedzX^)+s^ z0v}7PlCgX(uaQa)(0L=@O^-OXaKYBS! zBy6?kv@HG1Nw*!lPsJ2x3Pn9vtdSrf-8wD;l|w*@=s!!dH6Mhe#~(d&_*n^cM%3wF zgS8!0jA+c|29R9=w}4Jz#jF^#a+355$PW^ObmIhNv;k}cSxG@CxlGrvXePJdqdIE< z*tLNcOHO{2SWI;CB9*s*%Cw|| X8Mj?_9m{K*00000NkvXXu0mjf%P3Ru diff --git a/Habitica/res/drawable-hdpi/icon_hair.png b/Habitica/res/drawable-hdpi/icon_hair.png index 0ba99efa9a0c20c9700fffbcc070ebf5c2b68b6f..ff6899a2ecaccece4eaeb95aa5abaf5bea760e52 100644 GIT binary patch literal 1565 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 MI4ra;vEgExkbY=304Te1snnG# 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 O2sqlVuqn3Q81>%;t^H&G literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_chair_black.png b/Habitica/res/drawable-mdpi/creator_chair_black.png new file mode 100644 index 0000000000000000000000000000000000000000..19fe714b16c2c869466abd98f4175087cce053ef GIT binary patch literal 18823 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 Q+~?WNjjfFe4Y%z6H#s620{{R3 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_chair_blue.png b/Habitica/res/drawable-mdpi/creator_chair_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..028d1f43428156fb768a613de4ee0de3feb7e6a5 GIT binary patch literal 18831 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_chair_pink.png b/Habitica/res/drawable-mdpi/creator_chair_pink.png new file mode 100644 index 0000000000000000000000000000000000000000..348c048899d85a7ab26abc77228701d93dfc0971 GIT binary patch literal 18827 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 TV?-%Vz5`ZfYfTGHJa+vXVdxJS literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_chair_red.png b/Habitica/res/drawable-mdpi/creator_chair_red.png new file mode 100644 index 0000000000000000000000000000000000000000..9ea70953a5d88e1ce1f8f6785905f2ec16504951 GIT binary patch literal 18807 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 CTL=gM literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_chair_yellow.png b/Habitica/res/drawable-mdpi/creator_chair_yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..a21956113daa88afc04d43b498766f56cea76c3e GIT binary patch literal 18845 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_eyewear_special_blacktopframe.png b/Habitica/res/drawable-mdpi/creator_eyewear_special_blacktopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..8bd7b3731519d52d17f8859c3f2d93de7cda3229 GIT binary patch literal 18262 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 Z2>_j)V@P%$MEK|cC%c8V1vaZT{2Qy8{eA!d literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_eyewear_special_greentopframe.png b/Habitica/res/drawable-mdpi/creator_eyewear_special_greentopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..a48e2c9b6f45c529ca6a273765b084bc945d294e GIT binary patch literal 18280 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_eyewear_special_redtopframe.png b/Habitica/res/drawable-mdpi/creator_eyewear_special_redtopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..7bf30d3b3d579189c6388da6b3ad1582e57bf810 GIT binary patch literal 18280 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_eyewear_special_whitetopframe.png b/Habitica/res/drawable-mdpi/creator_eyewear_special_whitetopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..c7cadefccb8c36c9080997985665c984439ef40b GIT binary patch literal 18263 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 RgT@0m+Ag;#wqC#WzX3ro1YQ6D literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_eyewear_special_yellowtopframe.png b/Habitica/res/drawable-mdpi/creator_eyewear_special_yellowtopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..4c002d6429144d7e6e92981a80cf2e6cbb721b22 GIT binary patch literal 18270 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 WbWWBS{`WTk;N~>nvB+V?`u_%w3jSgM literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_hair_bangs_2_blond.png b/Habitica/res/drawable-mdpi/creator_hair_bangs_2_blond.png new file mode 100644 index 0000000000000000000000000000000000000000..7a158a872628072587d896279f56428fe329121b GIT binary patch literal 18400 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 EKf6UOH2?qr literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_hair_bangs_2_white.png b/Habitica/res/drawable-mdpi/creator_hair_bangs_2_white.png new file mode 100644 index 0000000000000000000000000000000000000000..40e3d8c05d885957df061c54a8cccd4d5e6f5f1c GIT binary patch literal 18379 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_hair_bangs_3_black.png b/Habitica/res/drawable-mdpi/creator_hair_bangs_3_black.png new file mode 100644 index 0000000000000000000000000000000000000000..81ed3ddae243ecd414d42e115978b6cde860a448 GIT binary patch literal 18351 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 x#JKuztZSTlY;Q$v- zT^MV`Hn005MyiT`APl*3>TC07oGvTT_@ zSI8Ckb9pca3I)dFb6K1~CIEyqrg^Zb9-TAH2A=g1L#|Tj{ZUo6fPl+mFZWzVqqDrsDw*O9o!m z3}1Xi?#S&;E2xt%RZux(k9EUGsAO5qoAP{nRYm2CHiSi_l0Fa6P$*#N2!`}zfWdGQ zX|Zmp{53!(1A#2hLssN^3Qg&jSi70Lm>UY7sDL6R`G{o?ZyBBN>=(+v7$0dvU%- zhapHR`8=sepI{T|s{mgw@8yM!|4*92$V zI}}o@mS0OSm)I(E&>^yjb6PxF&mqs`-+}CX>V(LytKl~mv+Z%%P_lqO{v#V;D>P1=Yjs` z*Iw#JVpc`kO&WY&ez(u**C?PqO3|JaBd$S!Po_{PZfi?0d(B8s5UvmjeLMQ_L;<(?CHs z!hidVI?>2G^C7#8`9K8AVgGsnSZ%G3px!AkuTlU2>x@XlvzA(YWwVS*<>r=6ZZ1>) zyw-S!m3~FJm4=lPBVsOp?V{XmRtC{EXSEI2BLB3|#+ADHMu;9v+4;8cgFzB7$ z_C|USr^Zb~YHW(3RG8>b-9^DHEZX;*!?_dGhN%s<4Z-euokm%yIQuzz3AY;=0q5lj z2aI5gZ$-7GwcTjLwrREL^!O^J`B|(#G3fEq!2Qm;rL)^L+Hvi2%p{DZ=kXNxr>Bon zr{LpOSmhlpbU)*^^Yk>_h7>~0_8AV2C-aUSyg$c(rvCuv%xmG5DNhg1b4k4C)ll7O z_d4;lY@bL)HCl6fRSer;cIqtoS?t-OS!a@*PR+i*XLc18WrBX2)RC;7%=Pp(EHvD# z8GlFV;L?K&4r&=9sae^lvY%xud-i%(Q{%E$du++K^~8F#W-0!8D91B9ZP{B7Ef03q zlG8i0*{8Ww^Aq7dL%ZaBZaCd=rJQifIJc&?q!Ok~pIs1Qq!XZ;6TKl4U$Nj^&6CX= z4U3b8w2SwcWoI2FP_Rp}UIp&G2UzCvtx4+#4+~usI}9=td&74>oBnRm%SBqJa85;N z=E{KVLy3pHbL?~6a_rt-HO}wKOgnYerr76Gq?%>b(uFG*+OgwmC#Q9IJn?v%sgyax z*^JnqkH`)pvs`i;|t^# z=qzw_e&gJo;_h5@YSF1BPD`AsYVOt?t9h7=Pc=h7!gQo|q&`Y*xwLjg$O@yv(}kCr z4(Hoeobu@|ED4TULGU^0?YUxAfo)z|-u#EfdBvGiGK*XiTyoMMvTvOIyYO~l)}`5J z+aJp{`4y+S)&aDhLaxSaSbrS@>Q z`Ieh~hdPmL?>ddT$Jo}wY1NA=IB6cK_wCp-*+qiwy)k=sIc}>)B$5%ST9r?4U2R(` z>|ej?MOZ_BT53URdDrQtGu_7BobH{?NABW|EK2vm3hv#wMS1SlUT>~^1(1| zC|mVL7$adL^+0CCd>OXvu1L#B-`_qBhHcilzSo@C#C(7LNtb18Mv z&X;K~m0LH>OhVpT#S1-JTizFyIU@@()rfe=!YRhZ^uT{vY8alL5j($UnrQxBrO1ir4eMZVgSP;gH zcon^UfBe4nR@pkv35D!8>{qOf)w#^5^TRiT_gq5GJ1BoUpkQC_WFNRvq1CC^)D;Gg z4CT+WnO>~xHM{N*4&|gTuIaj4aHnaX$>DcLM!Ke!Pkph!@MN^37hK!>)z#c}g!82J zp-oDynv)ktFPF3vZS$k9 zRj%GhpO%ZXkI`vbWX)Z>^QSk>Ow`=^*q}M2U27-z&h_Nx0~fM#DvB6&tOi!+t7q_Z zU$sNoiLVmXf>ob1UQlgWexa-Xy-gD`vBsdOczYqG==gQgojMhl}6Zsa5@cZ8+_n2(D_Z>iNgv%9naP>(I8& z0mYVqd8)+5jj@|@U&!D8eWNy88@bLZr6(S<`3HW%-2ibms$e-{I!R z@0z!+D-~t*);HS?$VF|h8;RRhOOC6KR*im}Zb~K)UYhfVIzMMp>KJtk(q|4I z8?MfuIRhC!_~7lM+WMsWqlrC<3D<)*pB#Eq`gZo2rpofldDm`-V9~4lmVfFh6E%yp z-yLsJcWv7Y+iEc4|KVJ}$Gyx?39}OtMkdK7^?s&f;Y|Rrq=!TG7J5575$W6@1dYM< zVcr%uq;GhHvdGs>AqVfu6I!}v^(Fc&I4 zEPzg6=$ez2NFhW}Ac!fX!9s!pg9XG8Gu=^LBKTe0jMRmVb`b`c=~{{hgn2tJgHgDA zCJc|j!|5mt8fHR3pz(MU6O0iIgF@qwC^Qm{g`){X9FB-W!M+^2WF_z$iO*mW-K}lE z3!K%y{633{-iD36JBX9~C*_;jYtMrN>3?`J2$pnuchZQuuv@?p@C%s^%k7$N{q z9{tl(;C+1p`4;}&X?%14a`r+FYkYCOixqo*8O99Z{31;384DXtg|QVPf%!+I@R>9r zmrvz#1Ic4qHvaqsK0b-F3TEI;qjQ4A4^@juNNCXbijV6tt!Y9g8H_c7qp)xcj*3Q) zW~3<`CC7`(91eqsN25)Rad-lpg~g%ZI24)=r?F5tINB6PGeMi0Vo^-f(Mf(E z{)4nNm%c%qN}%-E)@N|(p!~N4ArhFzpdc0t$FWT4a5UP42B-O9m~a*Whh|`zG!~7H z{W{PDu^$F<<#WKwL<^kIM?4n>I2aR;0#BEYhtmjn1{_CcG2jG@DH=||;xKqqf**_K z=l6AppUC_$ls!iP=2Pf|JOi_BwDx!~*MHyo)e*=Utsy)bU%(V^O*7rEd-Ge-`BqcJ zF{4|YNTZ9Z51B4bU?ziv{H}HUw7x}t3FG{@oc|2LnEr(DUymX3X9i13|1qi2UcVL* za9KhTjnA}XgBkMA_U4%G_kqv>NJw$L4&?kFEQNr!@qf1vCVprJ6KBeRo3PMeE*gUg zNnqf?&1J$eW?@li0v%8Ly3qge3o)L_bbnefo5>&}zs~Jz!++A+{j-|*Ki)(?R{#Ic zP4us=-PmsYzA}ETwm()<5`#`;arr?sA(<0IV>6MwU^WRk-Z-8wr15JAg&WA_J98OK zGI*)@S@Tb$z~4@njs0{=7P#A4!5nNT#%O}EF&u+HPn4O^Z-S2aHiZaYEx^h}8?Dk{ z%nxnQ{@&uMAGl$(zX=8f9!RwK|Ci8-ZfK~F4%s_8z4tT8>h_6`~+?N=rzY3h-_!2mlP7`jtEu{MnB?!pRXuo5NKr+W)c&SBZ_yRoPr(6rwuV_d#72JZ{8Y(m0}DnDKGP zd$NVP0B=K`JhyzX6?ny;b$P=PnfWgM-LkPjbP*ue=$ns$RjC@q(l)E~FH5|S)GT`$ zvAqi^R-w>d2jzCoIi;4SE_>G0dO(I06aLxnRG#`nk@;HjpRYH`SbVSM=$g42 zhMErjicj6ADCbix7iIYR?7*ws{#zBXrEfqci>z~E@9+jpR-Urehv-*iKm~}&;N=TiqlnO~5`VKle3Ev(n+SRPHzVCeNTmQ9YuQiwFectDJ_WOIE_j&i8we}<} zbFouZnymx?fU1MNwLA1VQ~XkpgWjKqnSFph6b1G^p#Y#fP5hDpGWSD0lw5f<+OlQ- zd=Wp?pD#c-&}ayOkk8=-vH>9cNwx=3y+HaAgr=gycNnr=oa+ms&3x9c9-x#e);wp)WQHXIIkP(JXg ze)#-DYUhc*?BYiG3I&xkd%PPlMkU{B?v&?SYOYtmXh&JZD$NrB8VbcM-OwR@8Q?=S zg|b+$LjDRM6Mj!w0jO}!s=&-i7*T&?wQr?N%vPBSQHrUfLdVnsX#?O_tFIppY~2S;x9#i=;BJbsenrqPDptX3qG58CZX@RPW*f$FoOHhB_cN+k5Q#7H` z_6>zMs1-Fd81F1mTZ4RaRc=I&!Dt)qXe<<10Kf}TbkndAx_EZX61kY5;Y0I#Ci$;c z&RsXKopV;*;yjSs^~9@BAZBB8a98Q$#~tnMkCtAy@&#{sMGbSS)>L>61^yjP`84qU z`IVRRVsWct?IwMAUUj?Q>FAus-HKZoEw7U8K3z~A`J{7C@45q{)Z1`+o7>cooz|H< z`fx|}lB{+wx-tLm2f;_&8Df^e>LJerd+#`k{Zf&>>W~`NyXU)KFEP7uC!J>K{Rc zoJxc8Sj9<}wF=Wf-6x4MjBVcfI~BC{#eLANw4XF}`#i+W#OZE&jwwWYtot@P!qZ-- z*G%{eDPg7UrIaPL0B-ZA_;Ne!p4hW)X1}YPr(1z%P${gQeR}x`*|Mbf%*Hce zlcvVnR45ux3bR6hb1m(?oxEKh*&j#DnMauNMA1Z1cB@;}LcP@Ej^`F!n)3JcnG75@ z!Q0+Q|H0JcX=sfNiL~n`^QI=za0^R!{o-)u2>tHVyS8_O-SxYS^0Nr`v-MMNK4Ar% zl_%{nLM*P0YtL@K){bx2ZrAPgRmx^qgdF+c@zTKk*4m}BIy5>69dhgpoTcaCO!ue9 z57MU)lUG=sJXqp>$}QpeG{U+}QvH@04vt4p9@=|vw!fDD0Poam(WNO*_s(@mzvFec zuFLLq`fJ(#FcsB!%`G*FT!UFzGv#M;XNAo?mEm-3*1hesYUmgf?Awgaed_!8p5BHf zh8s0gZYk|ux_7}|Z9_CYzu;KGvjSz$KF>OOa{g+Ms3KcWyhmHU;_qpNo(0*<-g;qd;+A`6OdwnPcG;%PXE0XHvS#VRl?&~-$qkdUJ3StIJk3+e zo8fFmeqV$t2so;Ju*^E_YH(gpM$VPhF*#2Byk`-YJ3r2eLJ!f0f`Bd4Eqq*nbn!~Fst=~--_@RMkU8f zF0viYwy!wm(^FC&9JhkxbJW{&#j0Z4li4TdKPWp{mNzA@)FsuWFy{gH+UY+_ZkFU< zn0312kz8|8Nl-}?$Yp48FWe})){}ZUHR@8-Z$oDCstJ$P3UyZKM2DUePA4xXKg(>` z-(wziqd%<+&Gl~7XncfkE16ce=sGXkBkP_WSBqO3x}`61dy?bkI#fCpm8D(%wDxlQ zQqlX6RWBm%zR%7o&Z_D@-h8UZxQEx1&~o55;lQFCAAIPYYqhlJZXHeL$_Msh0$NW* zyV6`^x#v6e(M)uT*U5*cFB}ak7y#dCQU9U}542I+C??Nv&wSS0HmSH!d!f$t8b4=E zTq|vp{s?O%a-<2!iu*qscD(K`Q+w~ z%9FbOwSVk7sXNe_(U8)>Q;S;`{rbTjdGHmu{aUoj!nlMuuXyvFf<*7xP1tl|SW^ov zwAK2fb(;0FEH2iSbPBnYXh3L%d#8oX->DQ) zrBlV#LpK>WB|f69G@R?wYj5Zrx%-cla$>~18~CF}9i>|r=I<(ZQgwQoMb4R#xgHUO zGb3NdZrPo(E5xcm*EzL>`-c09v%c;GJMQf8jo|GU&~x|7-wY_;bz-s)QmMr1*lYR< zgNKIlXSr-I&ei&)TcotYoW=Fsw~KEz?=so{?!ZX*)T*g3c9$HDcl1K)c)z-QVlC+` zB_yI*sZDe8;`rrqCny)Ul^6!ycP;GpN-v7Oydcs!Aa-@-t<9C^WdhzRdn$FrMZIl# z*uBct8|~A29{d=etxeTT+Ez5ZSu0(0(<6hH@DA++{;jL~TK1gFFT7sLYUJGIbiI0p z%<)xAD@cEpt`@BN_{lld*5&8A-~VOPj83mNXfE4QLMuIdm2$D1op-aLeu+8#2)&>F zk#5{`_vv}?;fLU+9_HB2ycV&m<_0>uqmi~TU=dKyuJ^8`nw{~hZzg`*6eiw#RHCFZfZGZJkeSvjE zd)I(s>%d%9@{{#DHk^1NfA81zI$Ry}TC2?7OxrAv%t2paz1dOGsJ~nMnh%w1=wvpuu2tv1yQCp{ao1*Kd*_n! zB@HWkFN%84Hg`<(y6Ba8io7Q1jpz+!IQ5=uP1*jk%%akj0i`{Wm(OqD40LJdm^3`? zzZ~)BjFAWTb4X@SFZV_A2W||!Z=LZpTDWkip|0$4*utKZ<*wyx`YpOGAJd*D+&A|f zZh7>sWz*Vx#5yprb$BfBUeZDWmCNdT)B_)u4?>hu&1Yopq|Yx~h8am7C#s?CSpIgWZ*3 zEnzzE4!5eiwr@miG8pmy`^Cdp>>ePZH~%>b~Zmq+&&c{@9infxFW z$l^2DsPG^GbRh}=6!UNa$P8eM5DYe#7i^~YuI#EFg2yt`^CCK9oCP$tKhHi=$o7bI zp)(@`m?V~-IaP@gPKF!=u|*&vJSZ?YlpJoRH|m!ReHS;Q^$??7L;+@cmg0a2Z|7wQ z8ehmp5K%-V6NAGdOh_m!k!WIqGeY1nSOOY@MPurl%(k^!4~Wt{}nJK*6D(*+CT1;h+GGMPblCF>-d6Y!(#s zL(5Q+&3foeK9B5&0Ym8#0yf&69m-!PWU_76vx7zYKRO8(^Q#}hI$_`_9~KkM4rB*G zCZW*DV}E!Gf-iR*hYkUExSBTbPQab8YvGS(C3!x_qc7AOM0^UYd&+GIF%sRV@sdKXF~43CJ5OWk6~j>Ii^Sg$ApQ*Vog9K$iT6Y91;P` z!m~jR$i#mMG{M<-fn0?=s4{_p6Z(k9!h(Xai5MsdlZXUKL>7|3r zQxby%G8kV%{J_n3q3n5~P(DRW$TKM0Mr)4;JLKEeFN#3kXblm7!cew&X`1PMS({&r z&exhEwi#XGWRNMYK2)YSf!Qny`kU7A)B0-p*^Kx7bpA60WBw300xlo4uv$Z+q_gh1F018@MuLF7i2U8IWuK(Xngb4%7ViQbRND~eg z%0*)+AxSJE6A7Adj5&A=mc%52UncrLej>&*nduJ(bJ;8^`pek9H2f#c-9M{||KmmU zef9tUTtxrc+>NcqZ!6=MYWsa9rLdS}4qq4qim1FGkjq93g1Hp*c;k4!P{#KV8b6RP zbmp_zRA{UCQS%S2px;iHjs0{=4RyD(LO9sajIktRVe-j)AI?!10`)AXMYPhM7WYdXixaqj1XE0Ah#eI$jYo1^w zzLp}7LiK$iVFrr zvM3Rk()feC>|p5W-7x4e-RTz7lA%X@5lnk`X8?$t4*)S+0O0Qt=(7s|)?onPjUNDz zGXOw~zkAIMTd40F2Wv}u_!9=JLWV#f4C8kJ!7Udn6P@=b#a72mPOn=>ZS@l$n6!?X zfQrX8zk;(zn0<=%Q5A_j!a;M5^g6{pEC!3iCE}tg11jEbqNs=u^=B3vg}ZEI=ezj7 zlkLZ7y|VVqMQk=#^Ft-XUTD?r*IfOZ%u*YSRz*dn`fiol5LspB%wJcT-R_W0SHH9B z7uSccyXK_bi_m=ohS(46S8=tWs%U5hf_Ex>OEe72?$jSVpsuiY+mVl3qw^JBG2H7m zG2Y5&4gvu)ceiP;{P_Bvtb3G|z0S~Dg3woMYp-g36!f1w{3gG6Uvf_^G-|-X#>KkG I%5U?31A5NN~%+(BL8sjpqAz@^6pUa*xxeR8?rIV;gmy@IrkuGvg zMJZ7sQ7O_r*9u8~^ovTT!fy{1?P}Ip|Nr@~|N5;pv({Xm_j$k1yWh|IywBcy*4jIk zF0ofun5_T+fU={5jXU%`Q}mXTfj*yxn16u2e8h? zd?8=p!w*C_QmKf*U_OWE2LeE7W10t-=FvUFe6aPcwNq^5ekZ=Wx*WpYdRL@cyuP8f zyvpKO?ITar-72Qp+DdC)&xoD8XHVpAbvGlWoeGa-JG77P*?KH?=gm*gHXieRST^|L z_VBq!l&<`Nw4!?1ayg|$2V*xvq*9Lc+-Xm@)>KtL>p)pXDd+_PDsn|^ZNZSP6!0N} zOkSu{E_)e}3caT&2b8;{mSg5@ADQ~f`rt~b$Zb;P!gw<$xkxp@GJKEq3Bb}$Dl#ou z-vh{y2G-WHnC-w)B(Qe=<`?&X$g~d!H%b93_G_z4WyAxB>0qo4;IjzGuV1#)7NBDQ zHI7pi5qOLQFpgdv2jKL1puA2+u@I0`0x)i|(F*|SjlkOLy1Jpjwu6A0UB4Ik&B6ke zE<=da!9sG09?>>xg&Z**?a275KKlSOrEda=fSBGXh zFcexhrJ%0PWKZ#wHON<2WJYwD%=Y2V`n*6(0C*;hXc#s^7tM}bBopaBd~{x)w9jhA zjP--NIE7O!&jA_Tja~zRA~v>1_Le+((%I4RcyX2W3dT*ZO~c&EHRWDIet$)fKM%fp zdil9t6mC_Nz4V8tmABqHXU?hLC%=u^{36c&^LfRQ&sz6%svMambVIdvH`Sm$HYvLY zaG5$gtoJRrHt+5T`+1wur^%Ey0&sdAMQUR_GJ6$k@_VQGDs*A_^FaXUFXdO9h4&eaOgbiy`}rc|at`abFMsthUiZ(QX!5)W`vVO-7XAX)DdQ6*G;>W#&};)?A_Z zd9BGdYrU#UYZYq+cI2GkwF~mMSR2ILKCNZA7Jc7R3t#T$6O#})1y$*JVTyU+)Q=3g z^a_KrD0ykC>vGc>+KsVN%$;=IJ#rccqd#a@I7qAR(nH*cRddsEiYGW=-FMOuo(@|5 z=E0MQ+gI9Mj9+vez-{>)Q)Z9dA64jPeqZSvwIthg_BOktig(yTY)agWjMO{9XJ?!5 zHaXIDC(mbUV;qHAgDHPGQ`Wf34}+?{YJJAcNIrp8dqyW;DX)6=>1FwoOLx3u)t?EG zR*kYPmp73Pu|_cFS~<|2=}R6vWFzM2;iomqo61k#=2kghCn4MEtp3Gme^t$7;;`H4 z4o12URpX|kRW`;_t4#G&cTjQjOZHB3Jae3OSM{#l-2ivpZlj!3yu)nWgd2@)-$Gg9 zej~)f>(L!)9alSyJ2X4A`&THWF)f3RfADy2;C^%6;#r+4o%l`}Fd1j%c`U`fCHn|% z8X<1E^~oc}?x)XT^^W@P3_h$QO_zdz+y%b)Y)^cF(lB7FccWb-t zUnaer{5C{MIYxbJO)S@7R_aXIncP_+GfyQupO|%T*Q^>E#uVF=+;wp3LB1#5u-Nbq z_4u0#2NoaDKcH!drsd?G$ZgG4^c?W4rN!l}_SjTl=V|QGo+E!hG0!tMZE25(rUy4? zQTFy+ZZ@B0aXi9%XormVRp+a&)Z=a$XV$crRU;Hxvx-8Ew0)KHV%A3ys`Ss?e)7i# z!_wp-t?>z%z4U8YD$Po_z! zZYKE}A&5`bLf16CaigxfYDvvx9AG3p+ZJEaKtA@s?oYd^yLr_s+x6Q0tNp8w>C5PA z>pQu;a_LKPcPTls;KU;5Mb0(1Z{0q6`{6-CsyX%%t}C@G^-*fu`L)YKmm3vl7heD! z3pWxZ0O+DPhyaO@9uV%PMbwG9^!IxmJYWY_J+>8L2g;?ogk_ zrfY8#yU|>Fy-NLKXz%5Iu;Ax z1+97(e)nBkYEf!sZ+6qEK9fFP-}dIixA2D-qv&V5mqxsNct@7;g0bsrgwp)z?a^K_7JC9?>9ZTKNraGwW~!jg z=A%ubO=~I_>qMx;bb=h!7?`~PjFVwgQ+_q_h;A@lYqgjH%) za&^!RCJnKVsVfcVF6nnLbP3=0ulO=TnBFzxOry?{ZS!;XmN_dsx1^HNXQXUE_~Xn; zm#|y+#qSNW&ee8FDCWN6zTj-A%?G0khpz?fI**=vK=y`j(cb*uypamU)+b)lmK!`W zlr7|fUYskpcibc<=A|#Z-FvI(X478NL$42y^r}{>KHFEE8RO)I)S|z*l)sKxNDc~X zQfOEIZDGtZnSAnvoyCU!4_xzly^;zdF6oE6_(rX+xVfd`oRn{mqNhS<^roKXN4=|D z>1gk^bBvEMX_^%E9XkuunlzHsH$OIL4(-(3&cAu(VDtX7IeAqj?0U{!PWOveWcrFJ ziMdHHlBNVGKWRLx+_vm&@4NT5P3WZC22G_~i>W2Yu8=R3fmt`|ZZEQ+9jCpeeWaQ6 z-EBF?c=RElp-*#T*?auI9yF~e8yuqCxZLC^<>~T(^8ozh_^D{nqF_gE_lLw!{;N(d z@ek^)nS6KhkgV>M;zuR-A86e*r@6;HT-akjrRMj`!)dQWkjf^?o_`*yey$s66V}l^ zDBm_XSDDnfVfV)TXR`Nx-=M|SLa(z<=})ms^+@@&g1O?N>n%#d!&j~0pY5A|pLz&S z_6}P-K)bI_7^sFPWQUtm2!%-#{ZS@6?r(}o@-6%q0*Fsl9j$Cec_kRZR8AgYo?plwY1Z4lWs;K5}#WH4|RXeqSmwP_0u(m zj}F%sXv{!Ie0b3FsIDQo;Yd<{Qo>!HhP(~mci^8CPA#!mMFZ1{R zsZt=c-2ffQmzn)^Kmjc*5JbC!0{;477HGQx3=r!6>>${zZ*c{5(FqHQTnaDFH8%>3=6(U3VN1_IU z3?V<5#^?J{#~BRG@A-WU z7Z;LafI!FyV1bS{6lm@!9*<4pu$V-gnTZ(^1Th389*1Wl88|Zx(uBYwu#L?y7^W$4 zbdul8e+X^EXRQ~d5)^uD>$CYRDEzksAu&w|3?`0Xio|nFnMf?wl!1h75Xm9pv20_I z!C|nBzYa7Z*bf7_2J@iG#PFNYM>H2UG#E(07-K*d0m&c|*hoB!!$v}L!y<{scpSlu z$mB4X%&$ZIB+L&(Iq(EfK7~!lGbr0eYmWyQ^nL4BhaYdWh6FN#1)ykan(KVso8OAg zx0)i-jBarfgC(jy6qYD~K{grvUF-N^eN%ps@qS#+zlUHf{sj52#|ZHO1H`5OSg6rn zzYZecbA%y`V9<&SWys&#n`3dm7s3Z1qeb=FkN1DD6avPE|J_2EGO=tBZ^lNNa${h5oN!i1AEj`7i>wAe(~zI=8P4|4nQ6_iEz*coY3t z{r^8V(Lc6!W4rPD%J{X~{#Z%LY!->b5B6sWDLj7$7eogJaLMTL#_@b1kDo)Rd_R7$ z3!e>Api{-qnt!T-{ySYd_SY#z;BIe?aI~eGV2LIsNE`|~G0cR16XJ+2Q%KO+0;*h$ z(JBpTerSXDr;Dn--}=%1rZ^1rLSsdrU!)V=aH+R==|neNIf(r&jyeYvYo)63`!36^% z-jv`H&j;p};DP}WZ%S~9=L7RfaKV6xHzl~l^MQFKxL`oUn-W~&`M|sqTreQwO$jdX zd|+M)E*KE;rUaLGJ}|EY7YvAaQ-Vu8ADCBy3kF2IDZwS456mmU1p^}9l;9H22j-RF zf&me4N^pti1M^C7!GMT2CAh@%fq5mkU_iv15?tc>z`PP%Fd*Vh2`=$`U|tC>7!dKM zSX>I@5AuQm(9^pi&||tuOr!PCBfbchgS!g=gwF$j$gKeI*9i384FKyg0Pt!p0FaUa zK!d+;%{4oyZ;zvm6)m)}Eb)x;HjI+(@6%NGD@CbHKdq#A$IV@5@#2TfNmXk5m$rCP zwA`%sFPeA7iEU)DndNXgyP!v7ZeuYL+p=)d!ZV(&gXVzCJ+eOik$NQPy<6{%-0}XP zIZ_6-s+nqG=@$BC_0uCawMiwP=(bZ$w|pJurglCuH+SxIht8wzW&!Ea^BvwP=2+e@ zMz*y&#C7J^ICZ``;XuA#s1#Yyvs-`+`sl4U_m%YF8LJ+tC$3HB0x^uxW@JH2X4j6c zDBp!2_t~T#y>FsEV%Uhnz5lny>?Xk*`9B<22EDm*Ay`S2tyqS1t P+JK|&5}N|+wOjrJmAolI literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_hair_base_1_black.png b/Habitica/res/drawable-mdpi/creator_hair_base_1_black.png new file mode 100644 index 0000000000000000000000000000000000000000..aa3b50bb1d2af08a91cdb0e51f037317e22d8c54 GIT binary patch literal 18288 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 D!%YzH literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_hair_base_1_red.png b/Habitica/res/drawable-mdpi/creator_hair_base_1_red.png new file mode 100644 index 0000000000000000000000000000000000000000..0f546030ad57293a461dc014d826106f48bfce55 GIT binary patch literal 18305 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 DW@-{0 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_hair_base_3_black.png b/Habitica/res/drawable-mdpi/creator_hair_base_3_black.png new file mode 100644 index 0000000000000000000000000000000000000000..8072bd6df5837609f31513afe89e6f2d50f6e0a1 GIT binary patch literal 18332 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_hair_base_3_blond.png b/Habitica/res/drawable-mdpi/creator_hair_base_3_blond.png new file mode 100644 index 0000000000000000000000000000000000000000..8b5c870b99a58b288123ed4a60af7c92f511384f GIT binary patch literal 18364 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 PpaBP)CDw&jK3o3-MgJ|B literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_hair_base_3_brown.png b/Habitica/res/drawable-mdpi/creator_hair_base_3_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..e8122b547a85b680c4ab319b32e28fb0659b2cf4 GIT binary patch literal 18350 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_hair_base_3_red.png b/Habitica/res/drawable-mdpi/creator_hair_base_3_red.png new file mode 100644 index 0000000000000000000000000000000000000000..6a0e1b41fa30ebf95403d83dfec452ed46dc9848 GIT binary patch literal 18362 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_hair_base_3_white.png b/Habitica/res/drawable-mdpi/creator_hair_base_3_white.png new file mode 100644 index 0000000000000000000000000000000000000000..42add9a7d2462f127590d7c9d17fecc7c7a46f33 GIT binary patch literal 18348 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_hair_flower_5.png b/Habitica/res/drawable-mdpi/creator_hair_flower_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b82bfcd0a14a8f80ab790c7e0d8383bb14eb198e GIT binary patch literal 18186 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_hair_flower_6.png b/Habitica/res/drawable-mdpi/creator_hair_flower_6.png new file mode 100644 index 0000000000000000000000000000000000000000..95d9b3b4c7cb8a10ae06334b4cda0318b8dd506e GIT binary patch literal 18186 zcmeI32~ZPRx5pb%Kz0?}5GO1uB3VfYi6IDKl}#WBxOb9Hh%5<7l*JK2Wm85(L^fe? zML|$OQ3MrHaR+f%P(~IJ9ql-N%~d*vUX1e096k@gRy8) zfIuP;2MB~HX9fc$6bZQeAP4}$pX7M+nBElCGzj`WDqk%B==_w{6;&u;u!v=j-+bKB(+{ zajXC2Lwfs>o}AJ;fz|x%tx(azI0BRDHUu zinZHKVN#hTv~pvLeauo7bf~hgFJ`7mt@D(5Iu_s{+N6$?F$V<_M zXWP>kUaMJLTWhhcOmijr)p?}>Ll�zpbuNxBvj2OQP!g&9J4@qvtC{2lwxt)ipL? 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/creator_inactive_pixel_arrow_right.png b/Habitica/res/drawable-mdpi/creator_inactive_pixel_arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..e14eb48257d59aa351616a7f8538b7f6946968c1 GIT binary patch literal 18295 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 diff --git a/Habitica/res/drawable-mdpi/icon_extras.png b/Habitica/res/drawable-mdpi/icon_extras.png index e896c03ecb904779f596017bef9efa21d4573b18..1dfeb395530fcb3a656232241b668badbd8c7881 100644 GIT binary patch literal 881 zcmV-%1CIQOP)Px&D@jB_R9Fe^mQ8GoK^VuojcQATl7^5r2vrRZ<$xd@OF1|>)Ip>NNpCpx(yNg4 z;^^Wd;UJNarWZkl2oaG+rM(cXlo0Bxg!t(C{o8rg?Cid~`$l_vpX9gm%=0y~^UnLu zl$9lttU$5?$qG#G3Z&EN3TT9taVwKk2Tf2FH#ah#VsoGy#=&F=r4uTm67i*=10I9P zca$?w6O~tzodWeR08w%WM{QUP+dQ}ym4tm5n!>!2`Xn~PYcRQr(hB>b$BeXh!-Ci@ zd;Z(#2Vgf`fC-R%gk527!9EFl;44UeLr0i^?I`?!>v??Vu`BNcqegS}C~_-Y_)V2j1R(Dbmyw;jg7q$`Zc^oh`BJ!O%!Z(vg)f~_w2vU|`h^$Xs@RO#XL*$$ zppSd~V(JnC*1Mpav=d&!PIPVL7w`;9l}ZA4Oa^PkoNO#LTXE#HSt4z) zm$-J9qozHK#->|{NmuC4*C$w?u0EIaQg7EG*HP1*FUhwNvl+$}jOeV(`7_uwi2dPT z=q-MYd^$15z@$?XD+gWpOnOmPg~`}-lQ;=>^U&30YZzyJd~3lz8>o{vSDgr1f_)iW zRDhGGv{RoS6dk7h&SA}46kYOefgZE|xrtWH_E^?HeutQC@XnHG|9~zCeU4FDU-Sf4 z_%*b0bKx}T@>WQCaOxZ^Nr{&1l85pA7BW2s5?TNNU{RS3M4BKcLn|eSZvV#!i~pq00000NkvXX Hu0mjf?&_$n literal 856 zcmV-e1E>6nP)Px&5=lfsR7efAmdi_3Q542Ky>H$!dRtNw_C$iLCP4`4pvOd`L8XqGJ80Cbf1`0> zQB*`h^ng$zh!V;OLWH^m6=GCMq0!^?`_A1<_PO43&$*HdzPr}`_F8MNyPqehNsurM z>*(qNYZ6>O!(R%5V8ZVwE=T(`Xz+Q@9>?w@Zp`CiW)N$+28ru2l{oLH*XS2uKG*|x z0?8=JFBHw4v0j4fXg_4j9UNshw)aCvKy>$ zsWn@781IkT0S;QiPOwV^q7AH#_$_M9(GTO+lKK?b=!Ve#y2iLuD(Vc42G>zQYXfRy z&bctQ_U&=7!wser*{7n;J7OH2b-A?MYk^Kt>5OWxX?Z@mepITg!(*lM`tF}T-Ah8X zQlAj8C4o<)^H$UcJoT@$itaDXltgaT&{1nMd`UQ z={2K7tH@c21y)FhiU6eTIR|Men0T*T^F<3jTuC;E>ZzEGye8@DBl9 ziDCyQ+6VG#QG!HwuLHmBG&eZvF@wGW`dSzRZ{Q!gKFw5%v$H7sf|#)7(_Pb=7D++t z@#%1WI`S{e#Eih%Nj^+WV;P?qh0i{St&SX2QMPQYbasLndjT#74&tjPNw2#e&YR3k z^nhYd3!Ikg7SO$??a@PQ8_)@j30y7ESIIHgp=ai)o*6xiJwR8zi5_KrDQJMDKwqD> zytPx&U`a$lR9FekmrZZeFc`<}AfX;G$%BiW^KMq$Qo*E@6(QUOCgojIV9xk2X2~1X zYPD_}L;a>I&{pr&6xaz2;ULrC^9#LF((v^$1QdZa9`E`(Od{h*y4-b z5R$5BIIFEz>#!aTW4LIDdDwk5uH|{&9eqrx?Hy3IctjAUAVM^66WGQ^S8k#7dcEtW zv4#7Gg+dk&A+vSYZ4wl24~vW6lZ7GTH^SMVd>NTiP(NJ94dwPc{{?(>LNqDMfh!6{ z@&&<`1mt6SQ24o88eBoBy6fza?^J1U1)=)#`F`hlEJI0f%kkGH^?y;QaQ21rwV$XA zT}gp^4_hS_L^l?Mip$r8pVMh@dd$prL8!ibn0>l@Cb(CbAo_p=s0H*H7td%(NRaO` z?u(X&INUqfb|qgPs3iH$(8D5lBAlLx%r>0F7tcIUkgpjop6zz01|L2u70OT&+!*D< zXU6l|PgRC40muY5w0sp|JD=6pU*fx#CsT3x)&X=j4K7o%_yF5>mWG7VpXWPut-L3V1VUf>JwAntjj6 z2AB(|Cb(kqMM3F`jQ!aLa~|sb)HcZ10?;|Ko8ZV+v{=!NINjhhgR*^^>A&~{wb|WV zv#fo`f*@eny3{brN1Z_ZNN_kOuAxnPcj`ZYdLOl%g7e@UWlX(i^W-%}zVn)V@yzXB zKK+ppXg}Vwp9;>mZTD7qa2VWq5=3}z#5EC4_gPw72yq->ttfM`*@t6(SWIwlN&`u9 z1h{E}(`MfyjRVpwstIltw&54gB!INOPN#E^4x)rrh-a?TPZzo z9*2~v6u9xoX96|BnZ}Q`KL+=I500001b5ch_0Itp) z=>Px(07*naR9Fecm)}kkK@`SkrrnCr7K;!P6*S778of}XnD7Kf6TL7B#s~1R`~wCx zXz(!v)M%nnLDU2;TAN_nSlS)GZ{68Ux4UJ#V4P&q>6z)AU(YvZ_N)|p*vjSFnAX3~ zWu!PNw8(2E8?LK2wU+OOhXj9_ey2!l+?`| z`C?vVvss#EvGyYerYSS%<+E3ijg5@~;cibUK=>eZcOCm2w*B@DlLjQ0%iYa5nGv_y z6u*Ae-vWSHwGaJ{4b&4%T987aFj6cQMXoQmR4DX61H@buP-2)=AX!8tl|pQ3;g!K4DQq^Z{%%$zo9B7i1$%%-#;l!g)6+Nv!VivusP&j|qCLeHT8M!yfB zAFxkgd>(ziD@-a7O5->%PrdxYt`gEZj?U4Z|2?AbIx9Wbdtl1mc+836mUO{P>J zo-~ekq1Ef2H2kM=($GF>1K8srGHF4KG__i7d0@cHn&WW5tl`H1E3hsft!qgjsO4v M07*qoM6N<$f`BXU3IG5A diff --git a/Habitica/res/drawable-mdpi/icon_skin.png b/Habitica/res/drawable-mdpi/icon_skin.png index c006648bf36f8d42eb93d0a1595e9532b1448ff7..3f70a52805fa49d9df8073ce768f3fa98507eb82 100644 GIT binary patch literal 956 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 X53L;G{u~Z8L%_+-&9>NP^~Qe##Fq@e literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_active_pixel_arrow_right.png b/Habitica/res/drawable-xhdpi/creator_active_pixel_arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..356df4b21dccd2e42937e0806596acaac692fba6 GIT binary patch literal 18354 zcmeI32~ZPRx5pbn_DvK~5hpAnBH6=|7{U@(0oj5C_bieW}3RHc)1&;6g<_jk`d-JPl= z`7CzTP@Sa;0Dy+Oo0A{(=_7e7D?-PeQ~FDw4;6u1kO%;D3~umxKpVJfsoJPg@OPO`5@b$OY`rUZaetswWCL3>>dxkpRO{(&vAR~v=mcw zLlx~siG~O6>-yGCaduYFzml6MzjJ5o4qaah^=+#6lsXL$?%aGRaoe>IPc|G1xl=Xx z?8fk^yOi$Yf$Xv-r5a`ReQtPP%UJaS$2n6TZ@zr7{z)gwK2Fs{0B9?hu?B z7&3W*QH|0$KrZr@nle!1l~se8oiL*H!ZBmHTMIvwy31HjuNWIg0$VbGX)gVNF_|61T}?#-djNPMj%gmYK$p#mU8oovHhgeypF;3T zwcK@s+c_t+>`wu?Jr4p01QIsR2X;wMm`$cGP>x_te~4u>+scCyVEIi z#{llIQIg~C`IqLljIf`!TYQkGv|9ql)==a&q#*NGu;kx*%+sceYn~1QKz}8__75{< z`PksiPnse|UfB(~=FSCTIqtjH0>DZq6BO-QncZb&0C38UGe72_|GIXDMUCR@+R1IT zY9CiyZE-ZYSm&tisLGC=EnGdnc$1^q)*HtR%vYoTus0yo_y%uH6=9Ihx&Wf(q4lw)qA8}C%s%ZPtxSnH;sv)u%7HF27+kw=Q98`f_d4H4jG z&~Gc8L`+!jayDh*6#%#CsFyJ{&u1v%FNR`J^%oqE+gPZivKo#X6{{E3&pNiGSiUmp4Xf#R zgn~|-bB&6XLWCoNF~`A;?nz&K&n+J@+k`OXfr_en zKzFk+zN3>o6|KD?k$TbEL??-gn^&=GlKb)BX)QV}E-m4H#yu7VSp>IP#;I2yutQEL z5%*Xi7F>z%%Ka>hH(yTVn$66bp)`X#Gh)Wkbk8F*Z*8A>nTD~(zD)1V(8}Nk(9O%u zf7VU8rn-00Uemq$=4e_$;gP~eg=zr<0S&a|f|dRoOI-r+{v8D>f9xv?D9rYG>96n4 zEm)YJP{_^a)9ika2^vaL47%WX!JGQKZ|?C`9aZ%RHP+0sNDIRdjiRmV;w&$k9=~z_ z=k?~5=|cvU+ieRA4iKsMMfkunzkxj*JEe~FweR+e7prue<)sb8YUP^^Xud zE3n}5kivaw`{+e(MZQI@FRQIed-Jl7R6AD&eTdU^xV&iI@_DY@dW-=syH(L$U@JBo|kW2zj5%!oeaw?TkKt2cUE`S-K_T0tCvPDwJ6Uo zKLfg-=v;avsIR;#Jbo!L=rBEC>54L!lI)VXcPdLN^QPogEKXfqlyirB;n-j0SIY}d z&pg(3PqDSMJgj^pgUi(8p1xFip)a*Mb>rEMzYf_dX(Zg&EHYSX5FOzE2kU0FYt3# z#kW&`F&<%$M2|EBd9iclxbjJH4spvSeRvoBv*G!jcBEGD?TP!n4m)xy9CRI$H`_-^9puVd1`n*%p&DX&s>iP z!`YImv72|N>{{zsXy}z%&V9js##!G`491@rz7)RwG zHM?uBbb<>8a?amKx<=erl(XPQ@Aa~4t-GxEzxr*YSEo+r$?o#QTRj4i2J~mu#cPNs z$ZMloRXcPiFW9<7v6y^jTe*4IZSSJqz_iksYSU=1khqn#*EZFjk_&mM7NFV{zwu?; z-QE@6baYVrDaQM)+4>aSq-~|sTJ_R&f4OJY7TKkrz`u4rqixU0f})ER>?TeNr{~!t zWX>|peT8Yy(lo<0?msxG(Z1wl@0+*It?0BHX04T*%c&KI&Xdnnfq7ROZ!EN<{Z4yL zdr!0KYk7Ezara$#bD#c(s<(tcZ?`V18XTfrJ=Yo_7vOc9a~u5N{-JEpt~9Bz=iR;! zVJk`&hpp|sEZ-tOq-3mFez)R}+XgMRG{59K3tqZvUjFIaaQ3SRq=uD7z_0u3pBf9C zqB?s9RoVyVXpkPP-?5?iiPEi~)*EmQ&}$qs`!ij#{4+l+V=g=EeVx*L=f$JwkFKph zY3(PFgQ6A<(5~_x^lZA7%I$C3k-ay2V+`u=w$-f%%Qtkh8r#=s@n4Lp>k!s7>r9 z(;U6wgToD_dehM{?{2@m+t{4md?2kqE%kiZ&xeOz)V!Q|w6(sje$Kh8k$CLN*GoS1 z)<(2N7`!^vuI1hNGvXJsk>J0Nzwy7B_aSv=YU+rBeEPsg79QCO01NwhG`g7X4otUP{ClHTeJ}L zk6uh;MTfA6Y$H30Dmjt_1qcJh3`AsDXt;GSD6FNWwKdKHfx}=4XbcvO#Ursq5`jR%U=W{PMif=(8(GNa zko=rnJ`D$1wno8Xv4Dg|M?^%RBJe1_kc-9=i9|F8hsNQMP!FUiDqPHnM23ru$AWy0 z;{=LWLY_d(?vN(V_$(+7A@**9lpm^Lj8`Z2Y~GV6(o&5v&u2j`Cr%&|oMS z21!KF$z#8J3WCp1AYbHPoyHgU4`(mtamE+tE3L%yLm3#!`+-d28Iz5s!q^Itq5LCJ zg&;%B7t;9rP|8@AjXys@k57`ULYR3mSiEq_L)CmT8ZH`N@$q<|6GIGAAgwhLgGb^B zG%R*BBW;ivNnTC}GS(9o!wbrOHbcz#I*K(7hbKt_;U`AE{0+x*j z85{-+|9PMZ!M+*DTgZbd6C-p&AIV(U&|sh?29E(*mPiKC5}FH(!$uNuHdrJPPrzB) z5SbhXllggw?}YhgC^w!6%BQFac?M8T+;c# zyfR!cAks}4F6n$=UKuVJ5b352mvlZbuM8Iqh;&niOFAEzSB47)M7k-%C7lnBKq?3m>b87>$Q>81>qbUrYz3>OTDbW?^)Ivy&Ijg| z;er8?Zpv^;=L7S~aKV5`H)Xh_^MQF~xL`n}n=)L|`M|s~TreQgO&Kofd|+M~E*KE$ zrc_+2wY>d zceZh!o3rG&>@gDOEed3nRK-kMEYeR=% zo%!2sry$iOT1kNYJe`7JtwZla&?8B~jMzy~AL#ISTk4fnD!TdclOYq3986PeP1SWr iL)eh5p}CEW$OAWf^@=x4%{75cz}o+XP5%x19THvu literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_chair_black.png b/Habitica/res/drawable-xhdpi/creator_chair_black.png new file mode 100644 index 0000000000000000000000000000000000000000..ad9109725a817b9fd356480cb46b9feb02b91dd3 GIT binary patch literal 18983 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 NH#4#_%r|h~|6ie9WBmXC literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_chair_blue.png b/Habitica/res/drawable-xhdpi/creator_chair_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..be7c85990513ea41b8ec6f388692f6be7a73e2f2 GIT binary patch literal 18983 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 Jr@!~`zX4L>R*?Vz literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_chair_green.png b/Habitica/res/drawable-xhdpi/creator_chair_green.png new file mode 100644 index 0000000000000000000000000000000000000000..f6bde888de2df76bf37229c8b59d9fedf7c0f665 GIT binary patch literal 18996 zcmeI42{e@L`^O)zUTc<$N|we_mW){~GmQ~r4apXwWz0M?Cd*)^Y!M<~G5{k`tz{@mAnJX2L5VE2X2%9&% z(V29H8{HdXMj$}Eed!dM2M7TEZE3btJKKTfx)aaG49ufLkD1eLBn2Qg28Ti=;@7Il z3yN=ymd|`DX?<&nk= z|8lhj-I(Y>e1K`CZyyIhzk^wS^<}dnihL)knF+}8o^V+jMp(22$cXf1jZVi12!1*gr+5} zwFNR30XyqRuHC?9D6ms`->Zi}XxfM5ARfT^n7kxUMmzvn21XkKZtH>E#w`bp07p0= zK{2n!0Ig5}ZstHS1uk6!DjLLv3jl$|0Ngq{QWaPf1njI;RP+ZTk^u?h5eMA6b@}3b zYAjO81-N1*j8T}g0Mv)y!9hb#rNL~)IteY}AH{} z`BEtixh>3O(T5k6_s1;G$}}DojBtJSD$Zo`n(*|b>_dfWGuL8AHHmKPr9QESDThaq zXBA=$j;h{X(>zUn*{S}S7vHG~T-t@_35tiF-$vqnZ>}uv$gFrd0RST<^jnWq1b9Q; z_IEYUxWPA_}D6 zQYj4+T%=zsu#70*7R}>&&`~i~U`2A|2l-p3i55axuOUzrGeghEEBa_`LS22;)=256DbJO5E~{)Cay-R_Pwr z%ItfP<0jS?hbP>DSM;ysM^$^kHEOC1F6*cZCXnhbE95TDsabVtOD=Co%s8p>vfrYm zVMY~#T8sP)AVfKRQ%4KOO|7QqAu>wnC2fM*g1iydmC6bU=gqIIy|LtD^-5PHBFfQJ zUGd4%xMeW$plCw1w$joV0#dp7$RB2x&)79DZ8mQ9vQZpRzmSSHU8R_Cw~g#xz>hhm z4p~6q}ConRZJw z)Wfs|7w2nHz481!AQ@?+?nfckgQ^y~!a$DgxLA%(`ys@O?xZI}12M*13119~6 z{k&s-i$xAd?!OaFRgp?v$-j~+<+t);lEpcxhlix@*uk|CgGqhKV##!SN3|lgy^`_w zgpO}KzV^7Z8qDrO_POlm*~0dt_H}k~7q;65=NsFjY`ZTAK01+OpPjaO&{o=(dSU(f zsBG$ax}Dyc5T~gaKBp>+Dl5Vn>x|1gx=U*y!X&9ee|33xk(>j&!!)bcUao(-caK_0 z(v)n;A>Hf?nHU0UBg&!BX7m_EkH0&~=fg?nCc!?Hti;ifgU==2s=ic}K8Lm_Mu0Bv z*(VZDIOdq{#(_H&KF$=%?f(9 zo^u*5D)oxoig7yYXuow^p>bYX-kK*Rc_mp(vWhn)Y|2T0Lan;=uIO&jg= z=JB-D!qm#4^X(UhwT5ZKQP2LqkN#UV-3i5bP*qEKVcpxLC;azuxO-=Ah!w#qjC!?C z5k`W=JLI)ox^~ttdxH3O1^zwW_wR0eH%|LG^10KF``Q)PYOmE5G#d3X?WJ&c z(268j?Kba#%!bOb$gJfTG?uDkPi(M=-lTKvU;5%|=a(N|GqTKYO{`ErrEDct0oJ6| z6x~X2QIp#=Vyb2tc=Sztsb+xEZPZ!y-r@-53r9*VL@YW|vFXcG_CP$5y4W(r{-g0n zdt1*y_fIFNP?5p8e!HzIEo%G)RM3G^ zULSK0b0Q~wUH#Dg!h7vUv`@bMdwOVT<BuegURe9#$D;-6@SDyUr*p&-8)y3pSN;75P)pKaNv*?NJ#8-); zULsH1u84GQxiU2V-l!dxSg+DvvcHH>e7YQWy%fy4+fct=&+d%fnB6Bkt>Na5tHhQM zUQNT&L8b4}ZyvWhmrhLK@7`>;=drhZOnD4`Hv3#Sp_d<%J@DbgXU}bUn>>An?(jDA zPVp;>7PS;VdMw+lYiASpWZj^N=$+L!zofnOgNkU0*#C91=B1*yVL;Eogka}{oCvmU z&*7llF8+tB_sCLZVY>`cMpBGZZBsrwyE@;nx{q&q^7?t;q)Gc~v6E<=Q^3YiySucu zf$)b3)RD%+X~)xoLo_}<+u44qD5#Ir(78*D{`Q7Av#Z%?`cU8c()A54BiETD1?|1d z9IiX0T*U71e9e4~`;zd`>Q2eYl9c>n7x&`fz_P1Bl!*c9bnS+Yv9f@7%cq|_PRHnW zl#K?`CvH!ScP{S;@l~E`s4IEur#zfjYE`;pY{QWLQ$k17V?F0D&syI;+qbL2FJrXn znaKoSE54liQkTDCIV|ME z*gm%9^Uy87XMVD8Pj`x0_3VZ0 zQ<--AczN9RLDuI4sf2{-MZ8I)lOz9 z!0GvW6G`qM6XFU|Xy3tGneL>s6O?IR}cM^uIpobU2 z`D0lDJV7QA;_vC<#lZUOD$K^kvcAtW!xSL1U6}5=3i>kxLL4nOLkM(V5TdD}2_?ai z2#7XD1EHy@t&LQNAmIo!432;yP*4O0i$-JNaLCt}0$zyq4d+XyU~LSIzYfQ;bQRo~ zOm8d<=I7_9;fKu2=HPO{h?kA#knBg;uwMqk}u7hNuzr~ zX5tcE>ARV_3JNm=eSdwOm#6plfxH-B*|8|X{E6N$ga#b;8|Y(H_>3 ze4W`Z2V~d4z+ozeVf~Z&$Ni?sSn<`Ztj9oOp;`8x9Ln0Hzv$Wb!I0}kH+aVCM8L0z> z&*bHTAagz0Vpy`WpG;&De~hASheTpEF<1n8VU!>Gvd5v5X_SC}6lK2Wk1;GQv1VQj zCee!oni=9*bJw8J$XJ9n1&u^ebf8365(q`RqP3wIR|En|M(L1UH4!Ksloon+l0V9S z3T;Ry?Vd>`R_M8{Po|St;lC#c))fxd!oanVP&7qH8;U?^6InwdK_~@-Mvze;kwPS) zz74b>*iQpl`O;XGiRiJQ&&*uNtieD{I0_DuG@(R{CK-w*QOHmXQU?LWpwLK79gHi5 z=<51yh+l;HX(&?~gOyJK3-XMWZL_t<7WDbC^_#P99`oDf5<};b(M)abBWIXKK+`cvZH?7@2tBL>PP4sj1 z|Nq=X|FN~3+l@a~#&6a3=Sqqrldu%JuP2d-r+E^oAk5o~ii6EJ&gTnm{v1M}d(eF? z>0}VkI#v9t`IjozZ>O8*emcc7Y)lLwW<~@p1V&2>iqt?X46~r$f;cmmDOlFof>pVQ zvsId<`KgV)zvE2R_t-t#UmFQ$yBfpNu*1SM9 zb1j9Pg=)*X><96zsj)Y)_ufqN2R$4OX{>WSW9FQtrSnz8?)at9>36~fj<3SGbXst6 zK3nDIT3MI=th)}__uG!2P5|G}l>f;u^E3KSMrDh|9fS=CXOoMIGaoiD7Z)24&L$TZ zXFhCRE-p48oJ}q+&V1OsTwH8GIGbEtocXYMxwzPXa5lNPIP+oia&fT%;cRkoapuG3 z<>F!k!rA2F;>?H5%f-b8gtN)T#hDMAmy3%H2xpUvi!&cKFBcaZ5Y8qS7iT_fUM?;+ zAe>DuF3x<|yj)ytKscLRT%7r^dAYdQfN(asxH$7+^Kx;q0pV{q609Zjky5qJn0Pqsc4E62&+uk_WyD!t1*yrB-X#c4*t7DGrjOWX<$=z(E zlKChu91^}$6f-U+E*v>_PWj!L%}XYE10Tp7^cNJ^A|fw=^N%)+Id!Z?#Iku0Vb|a- z(?U5{(YKEq$OWm3ddtj5lAb1ay$dQ2UR{_%O923JouE_iv-CfH8ZKPBYPF1R{*~>- z;tZs0k$Gz6l-PAK)uD3mm?jV!ToE22QpvaE5aVJPqooD_Dw^z5U32pvs-6?dT2!@S zjZDG8v2nV8xt00q4UwquF2SxzGP*(Fa>NlV@??J7#i{|fA$^w*DqAK_4pduU_7lIPQ@&yy=+a$( zTlQq#rMgS{ZOft_e5!p=0bkYFPwN^zTl(&fLym|~MD}43m&!gV%XN?UO39}+fUj%& znfa9hmxbkzq1;?9d%qQIo^E#cbf;@4RG&mh$ebHYJvxdsXoYwjS$-2F7ausx$QA0) z!Ms-^LB{wRBIo;B7 zv08P@pnQQ#^n0J8J}oKvH%Je0X-vfPY5ygdn6=Ntun!1V}X*z($zQK z1Xvw^Vp4i@huhwDZOUT-TWvjG;A7yTnS-#r7dlx-D^5yY|Es)HwSSvwW25B9)b+D7 zz(gFJ*rMm#yz#wqzC*uGtO|KF0(H|lJ8E&dV3L2Z%f3v%j*_@Nqy~RSiQz_>N{uQ$ d+QtwupyaN#;*Kv{%_yvXMq3! literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_chair_pink.png b/Habitica/res/drawable-xhdpi/creator_chair_pink.png new file mode 100644 index 0000000000000000000000000000000000000000..4337cd35fb4d4461f409060ad9e7c67d667a31a3 GIT binary patch literal 18981 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_chair_red.png b/Habitica/res/drawable-xhdpi/creator_chair_red.png new file mode 100644 index 0000000000000000000000000000000000000000..ee02e515234246120492dbfc926b314140ebaf77 GIT binary patch literal 18963 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_chair_yellow.png b/Habitica/res/drawable-xhdpi/creator_chair_yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..61b617428a407c642ac4b13b2051e8dddcf55173 GIT binary patch literal 19000 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_eyewear_special_blacktopframe.png b/Habitica/res/drawable-xhdpi/creator_eyewear_special_blacktopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..b8688ef7070594c0b6f29f5e4d3fc3a3d1546f9f GIT binary patch literal 18321 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 QbtHp1+q>K4+OFC19}o^15C8xG literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_eyewear_special_bluetopframe.png b/Habitica/res/drawable-xhdpi/creator_eyewear_special_bluetopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..fe16fcd00db85ead5f4ac581225f61377827046a GIT binary patch literal 18339 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_eyewear_special_greentopframe.png b/Habitica/res/drawable-xhdpi/creator_eyewear_special_greentopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..5280ca820610452589138877fcf1fd7d83cbbbd8 GIT binary patch literal 18347 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_eyewear_special_pinktopframe.png b/Habitica/res/drawable-xhdpi/creator_eyewear_special_pinktopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..413e32645a99fb3acc1cc1bf515de73f6804ce0b GIT binary patch literal 18349 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 Nlif1ge4F)K{~IR778d{j literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_eyewear_special_yellowtopframe.png b/Habitica/res/drawable-xhdpi/creator_eyewear_special_yellowtopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..581f104993ae199bb9be1cbace16672d09b6a6ae GIT binary patch literal 18330 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_hair_bangs_2_black.png b/Habitica/res/drawable-xhdpi/creator_hair_bangs_2_black.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba6e5c18cbde94e0533c9ec95eb42b7473b5b70 GIT binary patch literal 18413 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 CqgyEe literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_hair_bangs_2_brown.png b/Habitica/res/drawable-xhdpi/creator_hair_bangs_2_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..db8bb4cd8f2270499cbb482f9c9dfe2a0c050aeb GIT binary patch literal 18421 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�g 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_hair_bangs_3_black.png b/Habitica/res/drawable-xhdpi/creator_hair_bangs_3_black.png new file mode 100644 index 0000000000000000000000000000000000000000..dc6cf9d070eba5c446b0085b7f1f76a7d19942aa GIT binary patch literal 18403 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 BKqmkI literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_hair_bangs_3_blond.png b/Habitica/res/drawable-xhdpi/creator_hair_bangs_3_blond.png new file mode 100644 index 0000000000000000000000000000000000000000..bef911a0a4cb3ca2b2afe016f6c483fadac8e1e6 GIT binary patch literal 18440 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_hair_bangs_3_brown.png b/Habitica/res/drawable-xhdpi/creator_hair_bangs_3_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..df35aeeca36e83d76669f5fe48a207c13385eb6b GIT binary patch literal 18417 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 R{!;}2oa~m`7Tc`d^lw?hLTvy5 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_hair_base_1_black.png b/Habitica/res/drawable-xhdpi/creator_hair_base_1_black.png new file mode 100644 index 0000000000000000000000000000000000000000..3c8686e7dd4fca2e557b67c30fb3cf25b99c5ee9 GIT binary patch literal 18338 zcmeI42~ZQ+*2kN{VFz(VMVtUGh-4)M5<^(RDntZ=fGZ*CgvgSZL<6V@DvQe#5oHwy zbr1o?1w|211OycY!Er$lMgb8V@D0o0D9h`B3bvY>`o8(lHnB{7uwom1$Vw>)XgS$`0?7REn#kQ0F zkBbLi-5PMyM?01DZu6%z1Svh&qLAUy3|@-{hO?GfEsav5;|Vg?vv1Nbcm&eX2n zXA5{?fSGKk3L@|n31A#O*$%+@D?n+Drs_pNNe#fb#zZa!rfdUzZtLp@1ACHznRdON zX?7Swq>?X^3l|b?Bi1S*H!FI2q81p`IBG4MNnrfINU=nfg(T0#Mc}9Y)^`s8 zGU8@Iv+WxWuF=S=sUaLJ(AbFVx}h+t=j+=#(q5a(w*-I}qOiIVBXs_}@Z}2Ofg>jt z^-S^GpqjB|a6kLvRLjdiM&~onKE8yF?eRl}4GryWZBJKJSg&Q=_1rPSDce};IUMj; z7RCHZi_-7jjzqi-#S?K2hu;cUmln*m^h%|aCYZoWm85&+m_L>Qj8((b=G$EZ|c z{>>koZmJIX5cXIvtSGbAv{qq-&lmVCJ+sT&AnN{k9YY`Vua-LaQdhsIc)kXz%;Tzt zIe+SVhEn=XgW?F~DOR_YW-xT0#mM>Y^U^=4q?H``PWPt6lVw?$JB_ka@ecF! zhtT+@{^8+q+gJ&DV1CFYnx68o1rvv|?_%W;?!J0ZhVK zd7Mmfdw%*jeVR$^8tb#i3*64RMxUO6-;zSSzk9Z$Q|8$dM<34f)AAeSo_j62HtqS* z1uGLDc-B{U+P_YGE#EIzQ;(XpyDElbFgJCM;vCLg@tku>&Zp)++&{O9jxoi)N$N2Ou(_gobc05&&KjLC;U&RL z(rQw3O3kqziygQ66FSixuUgI8r^c-XGpd(XaMRpVAKG)YIEBL9eKGs@I_;`PB~nnS z+Lh05m$a=A4QyWjBD8)WEj2&2towB1xgJ6fw~{m!^9g3m=rDgzz44xD>6P18 zs$I%?=^GZ{rG_*;}v6nd6?Rg$mmGVD2s#q7_WJC z*hCX?T@zK9bR|A_8&dq!R4z!*Pc;Tj%J~;tM!koLB6v)n~xSizBy!_Fq9SII4KZKmX8~AH9(( z1=got)7Kb0F;u+B0X^9_?(e-zOvp`NcE9^x{@unyrpMm?JlZ|IZ2F7C1({J!o=6?9 zS0!gQ5igQAhcv3R&iZj#)M|w@Iw1 zxdr_fdO!U=ozPSN{4(RoyP&!r?QO+>;(veCxVCt3m~!WOqlcUa?GgJC_`&f*{-8zP z-ki>N2_FL2pIsTaxw}ffUVd0nU!&kj;jfQ$>donHv5%L%vDc{j>H0|8TQO3dpziUn zW0f!U`8FYKorB6PgA3G2&$b@ecIJiR!=JY5aCFd{tW$bZ>{8uRKCJa!d(Gt@rS5T8 zbLfzL<4;qM;mO`1EBfenxX(IwJ&fn{)*eVZnzkbh^;eTm2 z)Z32k?^s^Eyk=eRRZ;K7#`YPWS3OhCkv0Z)iMq%m@ef_9ijEbf71PIWbb5r!^ZL_U_S}CpC3Rb;lEX6XS0LZqFR%2YLGS#JRJ7TB7sNY`~2HYQHeTbhMA3r)pKB;erX^dI4U~|2(xFqOU(u~$ajCB$Do9kIg z21Iz#Rw1Z70f;a`nIM@M92Q|pL}5)#Oigh{2pk5BM`N&PtT7TxB;oNS3rAJYL zj>rNQo8)F=_i;GLGS~AHiTETmS}Yc$#KtI|fP=;oi9|F8hsNQMP!FUqBuK;vMg|G> z$Af%|V*?7A0xn;~;u$Z6Y@V5v8#`v(9 zXfOZ_gd{@fkdhKnXvd?Frb!w`WKNNbA3 z7$b3bIu<*Yk!DDYBrhig8Se>;L4&fN#Sk&RjABa1;Yb)W5*|A_$`^g%ad<2)JLGRg zndtdt3>uB(7$g)if|#JA4F#Gzipyn@m;^IlB8UNzAlr!AVWmq1~NDxnjgd=qbC|C@`XHc z4WaS^cmf)a1yZ0(#kZQjse-;cT{ZsIDMjdJZ;f!Yr4q120s)CbVJC-~)NfK8$!!V= zx>`V$i!oNEAw5`DgViXi5dNqQDL!UgTR1DH)Xh_^MQF~xL`n} zn=)L|`M|s~TreQgO&Kofd|+M~E*KE$rVN*KJ}|Eg7YvAWQ-(`AADCB$3kF2GDZ?e5 z56mmW1p^}8l;M)j2j-RGf&r0k%5X{N1M|vo!GK6NWw@mCfq7-PU_hjsGF;O6z`QbC zFd))R87}F3U|tz67!c{E43~61Fs}?342X17hD$mhm{*1i21L3k!zG;$%qznM10vm& z;gZe==9S@s0g-OXa7pI_^U83+fJirGxTN!ed1bg@K%|>8T+;c#yfR!cAks}4F6n$= zUKuVJ5b35=Tq+YkcpXtuq^ke|~i7$fb;6?+0&_w_cz8e7k8ihVP0bmOT z0J?mj|4EYs09w4m8*kY`eQO&bhHK?E;<$IIsGn zBW?Y(SJb|xN865_i|@Lwv8*&)?%euVimslAyjjOJRG;pY7s~PqLl)(ilLON(G!LH4 zl;f>F(UQ5t&F1CJAF^?cq=%RAK9F2qL2VA^)4{)cFAs@3>xTxmbGfBi z;MF6?>qeuu+?r!iwKTK#!sUbn1?MP5_O-3#9VIoFuu&3IyC*fXt3=^JeYm(5<1!X% gNsbl(jE>3!QH~pZ_E;Kigr){K+OD+8v-a8bABXuQZ2$lO literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_hair_base_1_blond.png b/Habitica/res/drawable-xhdpi/creator_hair_base_1_blond.png new file mode 100644 index 0000000000000000000000000000000000000000..04cf2562e5620cb16b9c2e8085c72a8113fe40ba GIT binary patch literal 18365 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 BE585$ literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_hair_base_1_brown.png b/Habitica/res/drawable-xhdpi/creator_hair_base_1_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..d05c8b5c2011d9cffb0863f2c5315cb0c2750a7c GIT binary patch literal 18358 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 Ca4XFK literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_hair_base_1_red.png b/Habitica/res/drawable-xhdpi/creator_hair_base_1_red.png new file mode 100644 index 0000000000000000000000000000000000000000..30ce977f421aa78bef8f965214dd17688f91c049 GIT binary patch literal 18360 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 C#WisN literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_hair_base_1_white.png b/Habitica/res/drawable-xhdpi/creator_hair_base_1_white.png new file mode 100644 index 0000000000000000000000000000000000000000..7e54260cb94476debc8bcf0eaf9e58f8fbe2aae6 GIT binary patch literal 18356 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_hair_base_3_black.png b/Habitica/res/drawable-xhdpi/creator_hair_base_3_black.png new file mode 100644 index 0000000000000000000000000000000000000000..8e2d482c270af2018a56a657090a76c463ed1cec GIT binary patch literal 18404 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 I7G6958<4O#NB{r; literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_hair_base_3_brown.png b/Habitica/res/drawable-xhdpi/creator_hair_base_3_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..3b3f1d6f05ab863dcfe5262343b987785277fb6b GIT binary patch literal 18422 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_hair_base_3_red.png b/Habitica/res/drawable-xhdpi/creator_hair_base_3_red.png new file mode 100644 index 0000000000000000000000000000000000000000..baab0ae6c4cae014581d5f359069b4de7c7dffb1 GIT binary patch literal 18435 zcmeI43p7+~`@px9Yc5?S>5NN-%+}2EF&AdarIV;!x|}4HTcj%y z6-7cJ>5A0phB$?!4tZ+&acUd!xx-sgRu=Y4(5 zV!54?!dwLa0F)f;t=*vWQqiBB4D^}J4s3=_@_c)50RSk@5dBF3DTn6(fPxE~LRqoG zk0;~_{CIqX1BHU%2l1Hf01yB|8q(ZZRQJx==6%iYtQ=z_4mk4MX2~JktaeAtj9+M= zC9k?HR_o}~S*{h+Y-}cL+{}oT-n%zq&n#ENsk;=O$hK)6+q?aE?5^7b&o>|Ue^lD{ zvS#SwV{*rt-n4=`*>bt5hwP19jU%R>wwgcfkL@?As-L%^mPRV*@&Q%30*01gP)7>r z4=0fpYnRJj0i;46D9Qol&Z*^?c`?H(udR|-OGWIEDi_9^Im$)M1eS*FwK@eXwUvrU zOIqj-WK0Iu-=X`q0xOWf`bAq`J^&)p`jaWoZaUl#o^DI545Wse2cvdX12Oc58P{= zvZoh!QhTS>e*NnU?hi9wv=|OZlUs~|a~sG~o8ysLYv|G+92cp23Cmyf0YFa)ui|$- zIq3+$?a%9ihu>NZ+GQ*NBA5>Q0|8*IwJwT!yTIax8~|8nL>ip4)Oc4h$FN*xUd5EA z3dPUsO?Fu6R#jT5S}8Ch<^`?SKeNqBFS_QOronpj?@KlD<*t6w34CQ#rN<>@bH2(a znp}E?UTLKKWXqd!GiX{3u~NRfyma=;sU=7CYgO1!p1xZbaVvJFtF~jju|3vp7Zu@Q zui0ZBG>H(i+V*n%lA8c-+vn&~JM4kTd{^_|r(UEKXPM63VS7yR9z%#tiJP5~dN1h0 zT=P99M?3E2_^C9+ktsJY<*(+*8dU{gP}SG0&YKy^C(!Sl*FG~fr+V(Wm1m?&cD|?A zoe!QoJ<_IJ-ehvH6@oV3(%#F-YxxuVEW|ur{ImvnQ+eqfu9b_l6S5pHEWAAJW7QmA z95%+w-caY!^tc&l)y=V#DpTF*J1MwD#rq~XoIgRmKmES#eXg5Mr{U>Ty!~9Agj)>^ z|9n}(0Yk*%n^A3PZP(h2+BDj6|mED}J=+WzOhZ=W!t^1ZdTMr}m*3LpV! zRad5QYV91-b>l!DNfUje@h?}(nrllbCus+1iO+Y$7uS=HKeYYLR%H*ndUdOAE2o-M zeSD$JLal|4&aa)jQ{0@3PwAgp;OSGjZ@9Bk8vHT9jT8~TZ-1N3Rz`X zm{oWQbjWX8b;`TDu#_9Mir{_H%VX7=0^8iQ+y#$Ha!WF&Wfm__Se}#qh;{AUUxl{{ zPZz15Ykwlsm{-Ut+(KjdsO>@@e(2X-tqR00=c6UtEk-PXK`svoQM9>|PXAjOj28EF~mGijhd>{qR;do75K;D`LDU6y+?iY;eZ#%;^p z)?SgT<#+SXeYskF9Z9wEwQS|672&TQ-IJxgr0u>IK6O!4Oq6G|#a@1_*W7w+qH%D2 z6GhNs{mJ@}b#p2U>q0n-TxM)Q&PHt@HJDz;U$&@5F}?3T^h)z`2ymQ7KpEtja09Ni zeD3Ovd6D))v30Xr68h#Ee(2HK%6CzjvrnU@8xjvKb&6eXcHm!@ss>rJ_blj{5xiip zLTIICB}*G!Z&DxogtFRT{_-As1Lv^)f5w*@hw5H8I%(KmykpVneWgxHPR~+_>9bQd zAvid5Vi|V({`h@?R@qw435BfJte4D9cg}!O`9s&ayNl5C56a&1FW7fxiZ@cB(CXAH z>MFg*2D14q(35$!X6J3fp`7%^HC=ZLZa3~TJ^c2_aM$$8>Cg8Uo{V<%L~44yEIYG- zkWUH>ZB%HTHDz)1N|`gHOS=jUI1gQNx;zu}!pjzhIr~Sht+>6d;-ZxQ8$}O=_NXmy znjUwpaq&WXw_K!sicZrY&)T^wZ)T%f;;gMt^qNB2HDY+TuO>GgxNthBs+dv7ywB`> z*^Es0Q9hKN_%czMtMs(tf>O)M3tjI&*fgROYxEjRwii;0k6$HSDg`rd)z&Prpq`+< zqkf{Abl-n=k@mQsTi>m*x%316&xegZrG10sTUQ!Aq&%D-G9Q8i4g&>!7I{0fJNpj} zaMt85=LB}$kiIWHD66Af__+A@hnn}zscvzP7QeAmzVXYIp|rQbNF@^`kKYbgztG`Z zhqiV0$+z^)S0XlS+Ozr0bJ+*KY|>FTQEIeq@VC|ifr@@Q5b4y)H*S%ZXW%-oyEastw z&rs8ow@q6&lm}<@);HPp$wY0h8;XA)r$U($mmGH|S}FQXx*3^3cwrGV*!ek=Qpc!U zn65T-Z0Js&+H7=q|HC(rYwMHhk0$mcCS2wGdUEh}`5X1Kjn$Ra^RL_rF~Y8Ww{oDX zBDg77^X>5#6_>VO5nJ_!{XU+5?|v_HAVEDLVR*81QtxNF5wZ~gmh`ZxUP3QtCnBB4 zLD3jIUl0|-;X^l~06?+`;nV2;pb+5;ve;a6?YAXYwGnKFxwfaVGsc-u0sYwaVL_mK z*m5d8%%4tRXj_mKNFhYX0S6S)5FwlZu7DU~u07(H2z?hdqqPwuU4;JT+Loe#2ruUq z2nsIQxtk#r0Wi!ddiu*SxwrZ__c4ui#`F<3O#2#F;S@pvKzgZOf2lNF$Eq#y>9 z=w@yEB^)G~Yx@a>d?Feh92|@aHbU`&SZFMPKtN+~XdDg+^*{|b@J7Z zH7KA5vH3zakBbobrTOwU3eB~(MS;eSFZ1H?#{zK$U)Vtu(IGTG8jHf9e`4h9EZ&U6 z`JtsiXtN0#$(Nb^Fra`M$_LSIpn$hAhz{Cp0=Yt+9}R**AM?ZC7!)wVhe1b!0U!r5 z5kP~-{%{EVuTLOj=HCosO#Rc@3)#%^#reior1_~C7{dOEnMgBgHj)aXD@20wk4Omu zX+mBQmB$Mpk7n8U^Aq&=B+4p;o->Wk=87Jw^hs#A(fEpw`va|MLXZsEnj$eqNF1Ju z#g1g884@GP%Lz_Kd%}D;L)p)u32EPYF{R>gM64MRi=F7@o4#;AJO-N?`nSA{_x#p} zvoq0wD-hDSbkMKP&b2jH1(6bv-R7-2xVF_K0wW+3r&CId;pLBR+{c$~2r z!Iw$%_5B*+2X4L#WzQBs`4l=K&!B7@sXgvs;J2+`6#?v#8p5Xq2|&@-G}r#RH^++3 zSWOYxjBIftjV`J_WV$GUK?Vu^P3!ou#w@>>vA7)Kb?{VZgy4(2OEkBmSAFn#G$Yg-Aw2=!H?)Rg$P|OpvpxX zsnU?mcWvK@ zrHCU?-J#olkPJ-?-URQxf*k?|cv-WdYrQ~p%`(A%v4JaoXz2Yj!wHHnhNI~;;pTj# z%8#}}xBk#m2YT$W31{4zeHf6^<=mm~-bh63+*wmEeK_5id$`iRS~;N^rq|h!-We#Pfk^CAeTf#ETMK;`zX|5?nAK z;zbEA@qA!f2`(5A@uCEmcs?+#1Q!g5cu|5&JRg`=f(r&jyePpXo)1hb!36^%UX2EG_mg4Mj)nDwsQ&IG0F#zn#59*6}blFo@8~4iU7<;bs z6sYkzF5_%R%!gO^T4_>%E~=|r_R^b(d+91^@?HSIh)9$2@EAPM5mP(aaKy*hN0rtz zeVY>}CP9ObJ75>$l891FPdg$Uknx26>kH67+&8K5V+C=m2|cHbP?Hsr#fo&@RMZf~ zz6G3B|5xqyqgPe<9_YO*H($JPq?3DgEpw8(>VVR0Z%3JsT;Or<6{DlPt^VM;b&HqG zIQ7X^G|>5vrCMqmw-{CT^>c?sV*`ejpy(sVzO4Dsd3abF;90Wt$#0jrh?*U2mRsjp Ht>5-<^lLah literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_hair_base_3_white.png b/Habitica/res/drawable-xhdpi/creator_hair_base_3_white.png new file mode 100644 index 0000000000000000000000000000000000000000..edd5a0ef96783e5c4da54ac00cfe4b2cf3001b87 GIT binary patch literal 18420 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_hair_flower_1.png b/Habitica/res/drawable-xhdpi/creator_hair_flower_1.png new file mode 100644 index 0000000000000000000000000000000000000000..afc973b24261dd602eda6eefb1c1c915e917c900 GIT binary patch literal 18212 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 KTNPTa-~QhV3E`dq literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_hair_flower_3.png b/Habitica/res/drawable-xhdpi/creator_hair_flower_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e32f81f8ab676e98a9454908805fbc205d74b139 GIT binary patch literal 18213 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 K#{!4d8~+=PjpMZd literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_hair_flower_4.png b/Habitica/res/drawable-xhdpi/creator_hair_flower_4.png new file mode 100644 index 0000000000000000000000000000000000000000..338139bfb80fb4f2cecb77c4bda5ec3f794fa69d GIT binary patch literal 18212 zcmeI43p7;g-^aJ3<1V^TlFp!uWUgjRGmUW>*N`wmy4Ys+j0rQ7nR2NdDy7RwQW0@< zbxlPnp(IfW(LKs3Bz5RLB%KQH9?E4`v(9?o^R9RO*P2;t%>16;^Zh;h`8>bpxA&g4 zwjE2C*sH6|Pyqly-O<6u9sZmpc`GTve;48Mj=~?xLI)oa0H{upyybx8!_xsk#g)fk zEL|EP5DP>B0wKzg!9WQ^1RP!v1OQ=AQa!j#j}C3~zGv^OonoW*I|2+to?7wi9%3q{qtd*%P%}%gsb>r^+M6R{f)Uwj7JydF#{j4aWi> zl=Qu<894ut-k#f&T2QB0rlfYz!PJcurIuwqYtkQEswygJY>6okKcqv5CTjfAa~lBC z+4ZN7fIRU<+nMEmDXI9ymIu zYeK*()%10JyEyq8mgj-=jwfC{LJ1q&BYTS;KW=MneYCj3+84a#wP}D`zPik-Kj`mB z+ULIBKQ6zR9ZgsnZ9n0|ALX~-IiHwWw@-Pif78o2`_C6t2S4lGHK=g(FY-2?+Tu2O z?H-%t-93a820N_x&A&dUVUYcz+2oTvy_p1@SwolG5RcAW$&!EXG*8o8T=t?50J@6> zSMM1q$wvijd0rPf_|~G|K79@l#c|xX764Y+%*HTp6a`1NcUh>Ex6E$--anciIva#?CuO?gbgoY5^wUYsCw1=b(y3zN$oMx&?T0iD z2|T@x3yn8w#otmnu=v2-1G>goW>)se>}T1ko;{w`%($#o9-H#)JWV}XvXt)~%<;@l zUHZmD*Mpn2D06!@H&ej0I3DTKzeB<2n)5YR#&Ngwv#VQ5Dp9H|oq{kE{Xq4cZR?^* z6?4zlJl?q8xHzd_uXvYvcGeLJ!*sE!SAl!aevXA=OVZj8hs8^j+l?|3dm?u}oBDSC zi}|`IiOxlMXhmT5!Nh~!ISx5)IreW#&GI@kQcsrJ7W;gPo@iCIc;1S6_T0GIpHtgC z9(z2^P|47CF{k$CVX^~H=pHGy3BAJ4=t@evyecZqS&;E8ytMt}%uU#SW`FRWcBfKL&3RCKsyJg(M$wXlB{^vixYy47 zRd};7>w?aiwnqw$d4<7+n?SDrH137#dDprUN)t9++Voq$xuW{^#}jk(mg_}|&V@{+ zE~7q6u07mkvFZA|gB@6|cb#V4Bh!|`Db@2Uc&Q#KckQ{;xJ9BZJ+ZrXIBl-RB+@Y{ zx|L6Fl(sGw_pV*}JffjDHKib>yfd@$beCBduWNhL@3)D+&rkC)72UaZgYk!3TfK$q z?+0*!&AE}T4A*Gx`F2Ar3mfls>fxCSCqlFPz_-)r@981Gx6oT?Wnj^=R-w|yU?fcWG4-p&nuk5j)HbU?7A9q^qPA{_3 zvWnY$YIEDwQ~Cin{@i;?zpp*1HolfOF=lDxs|R-!!I$8!YmsX6Vz$S4ZL`=TjP;&T zk543p);BRk%{Cux4%$3R;o@B>r_qZ^#`J8=8rl=`CE_KEN({&6_I>YEZ^s~~nG}q1 zo*6&ra`WfTp6xGEU#PZhn3jaSu~Ha*q_+HBOonzAX0i$Oprv!{l7;*K%SzKYQ+xNE z?kS;j_NauH>y>j2u=Qs3v5y!ljAt$Bb})8{*!O3A2`PN`b<-0jZADw>W$i6-R(F1y zLQT_7UXKbUm{UvfTlU58U2C1K?~+i+ea(HzSznzC#pDlM=kL0JopnI*W?;eI+@F2W zDuvc3Uon>(Jv3I#=R#hbD>XZAQ4Z#$EvV_dU2v;$FZuA>-v>JgCDo0>e97#?97|mI4x1@*GEQ8VQsqG1-GsoYTAD;E2pA} zUB_wQbi90qPV=33Fgx*O;zYjs<0t3To0pyI?0s+Bh)t|9YAoJT$S68?g?6z7%D7ou zv&e#ZocWIVk!jY|@bo8+}Xq`sp_>H+sr>y4>g7hdw!eD(JJw z+mYSz;ozs>m8X^jukEaoZ;y#{lpd)$KsZ|o;l{c?FA^=&9x-Avu{ zx5Je$423q~tsQ;J&3&`fsZZAL-jMrT@$N6{^|*T2HP*@9$#y9o$)9}veJ{D*rq@4s z{Vd|Med8}0hlw!MfkY3l0W*W%Z-frPuRRmF#klkFdx&Tbyl zTkP%POl1jzF(6yu4`ITBh46(a0MIPLgdi&r5~KVfE{|_+@V5Ah0gA^qH}E34;9P_Z zD1he>5dwKcEMc-D0$CKcfdyTK7Dj~w1VdsF6&4)C7g58^4Tj=U;qQ`WtO07Mi#X8S zz)CV8%G+friXjMrP$Ucq&B77zC^7|uCy~fxf(eR%!xOPMJQi2eR&zs zRp4*55H^SEZe#alIM^~b2oQ^fR4g_$G!zqRiV=ixv3LrFg2fTA1OgiFffj}H#b6kk zFEShs@->bPBw~f|gkqk6kCMa%{RQj9<^~3mfks|m<`pa)8Hg|X!Vad04FiQ(JO+pT zfyl*0x-2;OyGoJRc0GI~UuO2*0Y%JkA%t~@M1pl8EXZ~}#1|WW?;zN$kvPJ2AwffY z*eom*1O>wq5q$9Y?;e8i>mA65eB5D-xPLf%F^@C4IODVu&kto#81Dx%iDy_glnTQu zM1%8>$_Rl#u^@yg5CqYOvuyPK3BG-jWEIND1!VE~lAEgeG%Qjyy5ghpARAB&(P1qa zjWb0Ph)g_wC?gl5agw|o6J)q2B8Cf`{cKPSj*miS5(rcho=O@QWn5om908lh3I9h? zMthEr;o?Gd#O;LyWcpDkd);YSh#-c}%)Lj+l9B4?o)8jmM~XwaVkp*a*H zo^1+&9FS%Db)Yf9z8T0hga=n9FlbC4$z0g*U=Rssii21rG)N(_(L@%9jiwM5;?WdS zB7wA!;?Dv7{l5Rvi1Le!_w922GX%r&$H;#?MrZ)UmzMs+ zp@w?>IEYBV5r={ykQEoskbkx}hvSYHA_t&hCG|Rp_kXYyB5?ixZXwA2cs4{_$VQVn zcsLi$;Dn^GNh~zH3CuXAI6Q?#0>3WwfBZs>W-==Pwc37LNoi~rl_LlV2E}w)V7ux7KgdqqL zgt!RU5FI{Me6RVtD)_h4rNcj+(nap})+k3?h8dn>W`-tU@MFV_={F{ha>IbbG>Q5%%;1?Dz`TIpW){T_a zxt5|1LG^$y`yo0!HDnXA_flRM6y$BggU|IM$vMjup3{&9>G-bD=SRXZjxWODbQ*JU zK2+t0Tj5K8_^tyxa@+CE31H+*`EPz1ozcG;6%k7|2m*+7Q-(`AAB0zi3jsvBDZ?e5 z55g8T+;a;FT{tR-VKEx)2-ki-wHqCi()yry8uAM8~}*g0swyx!k--gunq?Rul)dk zngjsT1p8KBw}bn-Ioen;!=CuFQIj`@y&tr|zn*Y>y3P)_stTN?-@O-ZyX?`kK57?e z`Wp0Bx?R|+`&-LU)A^*JGKbvqdb5X_*N-z*aRGH Lm)PW4`)&SjzQW@NWT&55$N5|F-k3IJ$$3K)!q z3j;(_kt9GQM!7H;C~>HWCkTQ7AiN>dhtKrs(6#D){Kn2TE_#=%$a}IH%G)j>dQ#FX zGedQq1#yP^9!~bUFy6sojQ-{9IOXlzqqj}=G9SBDE1#n{AXn1}%#wPLQJq|aCh zco#*Z%{8h}JqIX--_}$ED%>+FaMQO8Xuq^eTdEYjNvT4bG|yEndJ?KrK}gyImhL=7FH>gR`s9*yQROaE?;Z|08gb+_5J49;%U+IRicCY_s{Ga z6R=z}dv$LD@3^+jNg%tU!LLUwW8<)IN9n_dZLO^j7F5|S0k8V4>*rUlsPO9xdLKpm z)cf|yxo0LZgk>>KW8OWfy#B`R;Pkqk>YLb2&l8ZuIofm2(O<*qLs=an!(UCH9Vu0ja_(U~{r~9H!Fu^f)WA z_6JZc>w;-{jQSYc%W4xr!-hB|_Ewhhb~U}U*ms5(oX1Q^FhO03o8)EWnnZTSdv9f; ze4P!ttwMjIY+34fCTadoyL87-F30|0-kNaB@s`lrxWoK#2FZDvaq^W0 zZs2iM$}V%%+{>}8nXMOFiLLsrhTTgvGTAmEf4uW~X6k)))q<&QI&Gvj6)2Tp>w6&G z`%&&b=6G`AV!Oh9CEiE8w&YGEtxl)h*r@B`da!W+?%UG>^a6SXM_x$JjDNIyhDXXx zzgyQjoL;27P<|6OR%`R*jWuz6)2SI#RHyK#hD|w=>UL=A?S!c{Oq?bDRcd>hcAChS zWmaPL>*S=X8oL+lp0!)w49h&6cPQ_1o~Cb)?=@!P;pIN-iX453J}rmU@9fF<&C6W) z%17Uae|UcGmOOs0h-v*tlz(5mivLBoi=K=>yt0q2XeqBoX>z6(hnpJ)YUOWU9Yd~~ zb?nB&U)PwGrS=(=C0OMh-bY~&7ZCl5y?b`?tW{f5L*DI`dZ@RX=A`sQZGAlH^_*vO z^be8TO7YOrz`Q*vdsz9-`Cj=>ug+Q&b>?IqI_ps8|1oBqZOww&OJ_Ur6Kj9YZ1;KS z^C(9nN7vno`nCv@7kE&AUzvT_d0|dhYSy{s(OGVyoW~Jo+doWShwWqb1%JqS>ok_7 zQasi~rEzTS6xtsa!py>%_sR;(a>nPBdL(<~XWippJo;D3 zm6F4!rXFp3pwd`W5?rzl`FeHyzb1p-}KRb-Y)BPm)`8@!17sjI&}|-EhQ7L&8ZS(`efX8;_LBCB^!I<65?GqT*IW$F&X;R zk1n5WT_AlMvg~Q(t+$yO#Tk{Ixs6A%R_Yg#=% zg&bDj#E>-Gf3V+U|2Tt>_oN&_FCd%I^DwJu4VGs}XRNC+Jpb!=S(z-CAlK;>j9HO| zFz8(Kr_P=&&oZBBwyf1l#a><}j@VaQ`6f0;_b_IHIdzYXTb#$dUH@gPW0tGCZD#kx zu$kL6A}S3k`9|1!i~6_+jHPBXJi49D+#`4XnN&`WFu6oLXx>)3Y4+hAHp@mDE(^0VgN=)7KhwQ+~#-q*hmbWW(8@N{R%!OgCIXam;s zvjwXt$7vxEjT$YJf1bN}kxBvW^wtuy;Jcproqj1rQDeV-RVlZQ zcZ=8Y{4qLf$+$gvDbG{J3AG+JoX~1sbfWX^-wut~lpCgvWgANvr3cQ_PM1SDS88v} zw`Tsqe8c>}wCK9^=p=amov^-3e{K2Sq(ARAE-CNrqhC4K=&R)GewTL_`snhpxYxQU zKCk25o{z!H3O#~DI%||~Dfg)wk1M%fdgrdeEi0yX;=Q@AoW|Asa;`t~br@R9Ld*BJ zz17c*#r6@c9lh$!y)(3^4QsZoEqJPW`Wbi((wDUU43z0~`*S@%&?=20Dmy@ ze9B?eaqDJf>GkjLzgDEDi;a4B_tpK{`qcV;Dcvc_=YxMe*!QyH)zl-6)s@vV&Rq#7 z;+MZ!^s)0oSW}q6>jTZ&o~^&4)|(Clyg&BV=Vs2wc9=tlUevs=Jq zNm=f0RE{VZ19C-d2ooMGhA%_`fMy*o204L{6vc-40-=@B>$3AkC;`{X$dBxfa~Ct9 z0D*I4DC86A!Q?~+awuFQYq|z4oC*gBhNK`WJUB=wp@v%-4aTLy-(}5MBh+9QX`q#n zt!zLP%Y7k=Aqs_1WDFV2!4dE%O9}>0CR%_I6+hqaby z91%?*G4c4pjGTwY$?|ekkfEN4818WPb3rNibree`fj}h_sU*VaC|~tO#u0G^yoi4k zWu)iVG2Gp$E<%YE6mlRJdpbOKj6lGpf@A`lH_w8IW&|X4ow2N96W)7 z2MI*t;3U76e-qkX#91v%B{=lZ*5`^iaQNW_p+Xck9&bUIhbFk zaM2mADKgFA7N>$7S@ofFWC;v$Y1pq?M-FRP`B^6Tb~*nUf}!}MQ73{j9M z)Lq1d=wh1Q7YA0+)O~2(JPc0*HK5flEFg zgjazJ0Ytv3z$Kp#!mGfA03zR1;F8Y=;Z@*50FiGhaLMO`@G5X2fXFu$xa9Lecon!1 zK;)YWT=MxKyb4?hAo5KGF8O>AUIi`$5c#G8mwY}5uL2hWhRp3GZk#8z+$>)RcDsUly$TtW8^_zNC-c@8wNk7o3QYl9{h+eisS6<4gire0U&xK0K6Z7KRW11NvA1Q0H?X;=37_8gytT%^WU)?9jrXdl!r836^UN#32|eS3Zn4f1 zBfRQ+pOc&Pe`^_RJDD0(;apHzZ*f2O(gEGX#k2r(+5fv47*GbDnCO(oFH$Q%Ad;1Ym>9wmRsj(R5?smB2@yyFiLy8%s4OlcA}X6O zsG}$dDkzG80wSmg2(B#3C?KK(z5yK^6?h#`z*bXJ@6D@MUsY0-<=k`s=l1>Gb5D1t zs&}qf?x3kQTMYmJO(#cN59oWY^sS--}~&u$%yfhTWloZ})7I14>ys31ISc1KQ6 zSYTqHs=X}E;7HR9_wp%rc9ZmOWX37(-5a@QhP$c8F11I>9R^4DZa)^c>(+;-n~(WF zC>eNOJ9Ob8wd-_$dO^K%nTp0CM>BUqq{bnR)(1qJFNB6CS{F60Nx~9mmB{IURrp?;6M&Vy zLS%aK0#6`w65w0IX0-z=kbv*Ptnb)4(`ez;7vVx_;#@ zJAi=!rgNPuNx&l{fN}EXIs#`e0%djD>iK|*27qyoi(Ujw+6?&KFfs}ScBBB)?fbkb ze=g3`?lOT$rQ}nJ=8^28R;wU`l)b%CbB*hqbQe!IXa2xUwL(>drOd)b;kAD6zYPGH z2{WMC_78^EP0p*UGv8Y{c|G#wRi$A=7OQ=zvpz>;1prSa5e-A8=z`giOO+x6hmOwg zo#eMpJ#*v0Zf?Go)de84yV<*6BxPfFWM5HJQ)frVqh*ygtC_dFw+!(r)|Yt?2K*gC z`8e?Q_bbolMd8*)IZS%@d&TWHF30E8?^oTyYJDE>@bRMh@JIc-hLujNB8JKIcK4}4 zdu>zq^y7{j?zGvz==%J|Va~HQ(+`T&HUe;V165&j0`lZqw&GvT3$+=NvS$MT&{r%h zzh|tX80okDX?@7>Ys*20%=thh*J*zc0Iai}hoavqu&h=A0Nczcle5-(Z^~zymMP6C z|FN}P{iCn>4x4$E6*k&7YMjV9!M=-5Z?iFusXeQ2;)}j#rH?Oj_lrpsO-5CCU7Bnm z(t6KS$tX82iBg?peM4m$)1Wy{fwhZav{ywpCHkE~x#Og%yXPTp#!YuObWR{RVm)@z z5nhh^eHOt#kYd-^Urtzh1Hf(j7*pbaJrI@eZgEfJ0uo9;tuzUg@%bIozE}0Jmv4o znJgSOmf>h>^k8cIG_>~SI9erf-qf8m+`^)LKRBKHjovu5(Y{gOVbpDUDh=;A+bHp7 zGsiz)nRLJuvG_)GM|#J#4zmuu4uihcYUwPipx@qkJ~Q^XwPD$;PVG*7rxKWqv-Ucc z>hbvG5&9HD{3@H=BZVGk++$Bp!*5I_)o#~uaz37W^x)mue!6}G{4*~km!~{FICpu{ z9q-1PZig31FBIQ|XlTaF*j^pSGoF<;Q+XzDR>;gV$u1{m-Q7K_nvNl2UnO^?Xr&0f z7$$`#KhH?GrFL-H!378POwjaG*(b7}WUG7id)3h6Pp$LZl4tK_=GlHq_1>Wzuk7>{ zuRQfUd8d}1jLqhq6w)n!i|`rTspNCb<(eDqH}}kQ>)T7J5bEq%1)-(}{+c;48>0x7 z3(nOx{k+MfIC)UNc(+CNsUsws*)lWl0+0R!TubHlyjequ`q(h7x#~k+@hgYTMc|BR_Cra&#eLh4@wys{baLqyoUVPn;>0O>p zo{zKCvUFT6$Zzvd+5X4%juhL5Toq*XCTCn(7n$KA%z6@5+Vy_U7W5!}Fz|iWTL%q> zQh~-ir5264nUw2?M?KCeBn zDzNI<0;L583!GhFy7s1exE7sQbYiK?QkUx5+qFk)AEXe{EU*u8U1?ou57XK%`mPFH zWmei^h-){JeMoTI-=KSF#ycsh9{ z`AKTs;aJA z#Q3+Jj&P&7Me#0l8KK$e1n=C3XD=QP$sS<7)}{VM4gR&A+D;)p!9DR=f16l#@y5j( zw`;#Gk0H$&{!B98|@uqxmOg&nB9O) zB7`)w(!_1H?`;p+K1t(Y-AHGU%LpdaY}5uyGx0M1vSk&D>vQ`)Bc0(C;5>(fGRZR+ z1YBwR*wY{TEd7~!`)1u_^o_Nmup@O9Z=$nwPNAlnk`GzA#4TTP;J>W3O-}0Uncp`p zWd2^YunPSOo*}xyydmxpZH>v?<$aDOuHpOtNGKtM&AV=P+_bZ3$HG(lN?bHu9;cBr zbW%4V0&y1PQtbBq3HyRFFowrDbaxxaz_S`PG)v}Lx`1P;DJyR>DKHXn&yyw#G@F{wYqqUC-}Ck_yB2g(t#M27_Ci|Gv8$9zC1BRgy4t0d z^xx=j=^ z>Y0(qHmsw2K(%dPt|qy8)1J+zpDN$|X_G!rAHBgQwJ+5^%`^4GYS!w@Znvoo4_-bA z|LD;2lh$E8#V2f8Km8`ZxqI8)L|$M0p7ew1TOv?@xB9jmE!^D2u4~(%C47BZTk^Eg zZg_Xs(vqchYx*up`tn;kr+HuUPCY|jANW%8k}{Nd*R8tvaB*s0(Hj4v-tf{3o4Ets zdKtvJ$8So*{?r+Ma6f}&@wl`(;Fs%0e>x8(JL(l%luS4<)>f*P{IxpAugaqZ#umV+oZ+dS)3s*!?k! zR?n$lkfA$tbf_jzR|g&O?*6NXbq&c4N0R!I60ZjSe0=a_*{fM+TB<6l=3coOYKC3+ zX61*T@{raL{ny9ZwA?y=Mr<`6_WS$XThBXL9};IJCJs+hOz!{4Hbb^RSDk%)Izz&6 zbs@8bfhZC1AP|#7EeuEElA+(yX0#zIGg!q8ee zAcEn#0znf7g9rkOfMjEESOk%T!V(BXBF+?n!(j1f3>J+wLt;r}Jf4ifAU?eescO(K zN-&2@_OP}8G#q4E82U*hA~G5s5)y(6F+&N1d1x$&L_%Y5XdDg+^+1Zl1QKQ_QXn=O z4e~jTEhuIO^F0 zFaQjMBx2~`vEMud(dRpmG5HsVG3Ng6>?M5e_~Lw_m3qD_14H@Wkx4zHvXN96T_FmT ze`H!P$dm|!=|W)ubu`Py@1LOCCuvq8j9r;*zCe0YwTOa-i^f-cJRWGvlz>!7OGIMK zkT^UYiyg_xB}j}kFDC>U?FozF3S~csDPevYg-FNY$OJqYkC_kXT$MYiusx2=moYj(jncPhk`C49d2V+T#fZecAfi5x^g*AtGk57?f^J3&YQQ zbFAo$)fA~_WQ&uTY-#nOvZV+kKR408wsxbt@yp8ixuAbtNhusQnJWwqWJ;*~Kqe1Fiv&Chdc1KwUnt|}5SlPR z80;$KfK=#I@vY`>s-XW)SB(C3N)>xJ*dUzjXy#awxj7Pt!cGh`q2Gi!(#sSwbhdyh z7jvXaLz=JJ;QblWsvod%q(2ddfnI2=^z)N+q8l#tku9C*hD*nlUIM;^iu*Jgta*Y; zdM!mBf$9le_JdStYVam_?-l$|Fo0pphtBn4={d^`n$w5|?)awA=X=5lj!(kTbeeE+ zK2qgJTcJyT=&l1jcH8mQ31I9@`EULhpV7Y=6&6cA2n>j9Q;thEADCB;3kF2CDaR$7 z56mma1p^}6l;e`k2j-RIf&r0j%5ll&1M|vp!GOp%<+xa$K_cz`Sx? zFd(u`IWF0JU|u;c7!cW}9G7f9Fs~dJ42Wz~j!QNlm{*Pq21K?g$0eH&%qzzQ10vg$ z=9S}u0g-LWamnTb^U86-fXFuGxMcHzdF8lZKxCV8T(bGVymDMHAhJz4F4=rw zUO6rp5ZR_2mux;TuN)T)h-_1iOEw>vSB?t?M7Al%C7Tb-E5`)`BHNVXlFbL^mE(c| zk!{Mvr8fQ`FDQVX-VK2s)7{!}zz=%F7r}P)a0P(y`2Y~P9RU6whQ7N2U?TPn22@4aX4yB&~o-|G}; zuQtS*?mf0al{mZlm`?mE$_8vxWCA1lSYX~rmkXhH7#dKx;bBEU6gCAgrVS`VCg5bZ L+&0g~ciVph?o{Dx literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_inactive_pixel_arrow_left.png b/Habitica/res/drawable-xhdpi/creator_inactive_pixel_arrow_left.png new file mode 100644 index 0000000000000000000000000000000000000000..976720a23dcbd3d7abf856f7224209a46ce3a1c0 GIT binary patch literal 18382 zcmeI32~ZQ+*2fz`_RSR(al#@Xk{t+%AuM4PkS$0Mw~%x~WJ!Q1+sJ^*rjCfHY=XEV zAgG`y0t%?$3gWJSi~=G$;2Y3EMc{Qn0b5N?ec$`)t5=m&WjXiU|G9mC_uSLnsp@36 z<@QSQ^W^~mP;zvz@qoVFgl}1C=yT_c{$l7$j_=?T1^^1Pgl`ETYri@G$h&f>R5v$& zo`4tT&*LK;sZ<0%l*i@xKKSgNwNp~;9w(m199e{i_4e4=sd|Q5 za;nRcv<^O*<6b+%)>ca6T3(Xm&YiJ4=C~UvZj*m3)2Vf6=a$1s+ina!k3Jmmuxjw- z?UA#ODBULpa>|-yYGf7nIpEz*VigOl7tZ)&OT(4==bb3aIC)(@pekF&(h3{akpMo# zkjYE5Yh*405)t>A91#8H*k)|sm$Vz)}v2vW_QWMgLomQg#cj{%l;60tcM zdY(X@6tM0l)2{(g$9j|YD;FDGNv)IEKzllne%XQ#wvdd+ya2S)H%>> z2ZkdWl}j2MO?Q?nuSLGTBt5F_=hrdP)l|f{1c2v)nC1~9blLparP8rMBZn6CN%^l) z$lEZuon5M8c^1g)dFnmD7qYQExU1sHldjIr$IGr*`!a5LZyMp$t*!AM4*VEH{yg~p zkBcvK<8Z6v?4>^ZQFrT|^U(!OyXCg}wZ2TT|9nni^t0wY?JJIc6?DVd9quzjcG_g^ z7{DFXPPX2?`0Ap&qpTP0MnjU6b`#*#dWuAJD)RVhrsUsF`l@t6&5J<*=&$6}-Zzky zjP>90yeWM2t;Mi?-Xb8D?YKJx0M^*(qG&hDEE;41z$P!w@RXItyIOUl8tDbK(_3p5 zKCd&~YOQ;v&RW%4o)xDo2o$-0EJZubp<>>5Sfm86U5x`{A&O zbO$4yhci=Vp;e=ks8CN{jzyos$Iri(qIP8%Ik2JN89m( zv>7HTE3JzUmV2CZPdq-$ctaNP_LjMhPDhIm?Y%eOU(J7zd-9dw!i=`P3zw(g@xFVr z$Np9NE6I1^ib@G{wlpMh4CZC4%cyhag{z;;a6UHg-u8J7Gzh0AqMAHfij}<;ERPY+`x=BkZSmU{=#Lf%v*-;>Oe_xSTVUF7yPYq8_ z!P4W2g`DF&n#GYApW$R_pUcjdU8zUh^G>hrsH#UOFz1y;7-&(l47Fpf>X~8D+Fl{*KQ~rBPsqEm^uj3m#fu(R7FXua$gfzQw!A3!A?Na`zsj$d7o3}S zs_U_IOG$Z9`6dR(PmOc#YRTokwCc1?7dHJqY%Zge_(Zu#bERfX*qPATq!pxRS&jSq zEH+(zx334yp*N{EJ;ryG&$_wz3OC0y`<^{VjZ+b}WguyLveV|9sB{V{Tcf`1T6O0# z!TXTa&!g_X&&e*!uIoMCa;duTlSS?`pPCIItHJ(0(Gu zmFgPDIoqv+W};KQiyxgjcQm|kknvWH@;4>)KnJCROn8QS=Ck$|q2}DRb2nWt^K#e5 zw^M)98D)(|jWz@Mv5O=)lF4yaalX@rK1BVhb!n#ssRjJI^hvMPj=T!1IaVo~i#K=G z7Hj!m`*T;Z)?jx=V`?K;Io>Vi)x$e7jF*h*}A^(eN_tq1fRx?`Zz0wT(=#56eYV*BUb zfy5U%FBCeW)iTi6R`VkdHrBn1&!1a>nrTGZXX%`@+-%RktW*t;&)u=8e^&USo$`@& znspp)bhBx5(qrl>!-dQH9SmKfcK?}LWfG}-6@S#It75Bu!LBN2CFizmQtsTWjffze zIjI`EWq0bX5bHuMm$Y)uYtBpd#+xU=_|lQ9!Q0QF7w(n09#FRH#B?8|e7W_pSG1J| zj|^o>IiNTD((U9M#C=7%OK$hxD!b9Li?ILgfzjTXbu*vuE)o_ ziENSYm@|Dz!V2jVCVvV&7%=ynKet z^;Om zG}FGjZD$#eJ_I-SX+&53ZT#nh7T>DDVaoN3EnX5{E)Uobz#+$>vO$ZI1~j_D>*Eqqg?)|;{F58yXG{Hl!r^+*ef^ua&aW*Z8%cNRLSf2{q-+&_%@N9 zJ%e)XgA0{NPdDy}KJi@U-Y*+9IhyG8)>-{ocG;d;L%x2#7hG>qnjgM?7WLV_v&Dj)#`q;XzfrnKxot6_`ooPkE1!hx_Z3&UR;_(!*=zNL+Lrjh!gr+g z@!Qtl*4KpR4K%mf4@$>xX&Om=pQ1vYo|2hzGeIfgO|BV*NPJ-tI^6R)pW4J~(#usF zIW%&!L~SlQ=EH+Gj~bgZnh&P;r>9*C`t|7W>zX(7PPWw7)i1nwJpzwi^KQjZZ*6#M zxaQl#?JBOFzaoA!81?^n`n~6!{GqgYX=$TUk{JV^nRsLi04(k2(&z%Zi!+JI3qmni zJU5yXcsL;-+o5y59L13&@759Dxz&9&cFUeZQzS?1c_CN3BkJ{9!mIz)wno>9wb z%%}h+k)>@xktauxpa4OjfPshz3JeY-MVM=k#U(+%h0SPf#8?+WfVsAna6kmz#SKB_ zg@OnZlnIiF!C?^uA_{9_LLlIb5I79h7>&WAv3MkwNHR7iVK9gKS?1dQ0s)_dMu&%oqr&khUML5RB@&5f3=WOMA)y|~u*hHmBLW#5rZXPoYaAOe zj2X)13%I;sgfK3{kGDZ!uB|N`XyWx{UP1hcfr7)nu!AU~BN%)%7KK6oMC9TkS{4-a zLuHu2b|Z8oUuO2h0mEpKd=TvchVeFpGC|voV6Z^vM+d=TPQ>AF2n`(L!(yVrKrjfB zgh2<7{ox_-zutjN$iF#^3HMKDFW|B#7v~$T(DPFn7{UFCOz0Vxjiti)3X!4wBT+*^ zhJY7JXgM~L$i^*uXXmZ6TLt=z^IVH$=Pgo2WDEnCq0pr^!1R4%c!VpP#{M0Dl^o7UavAFEWe-vf1=eIFj zTu6?=VFE@l6LhqpKyycNxh#^OF$M!-a6}~0k4;1x6HS;%KQ;@CG{Kn>m?n4vlW6KU zHpy@0--Wi}F*gWP2?{;F^;tY76n-K>NLUsVWPwZ^(wJ>VL}IZ729n{21CeZ^F_wh~ z8Egg<|8<}#!M+>FHIxfgCPv_tKEk=Mpus>B3?2hAO^^(t2@7e=WV4V&oEa8L#2e#G z%%BM}{3hn|gD~F><-iSt@+opkoAe}-T@{uKGo#|ZZagGHtPc&M>n zKMxYdV++C=p`aB9%8-AyH^<|CD})a~Mhok8Aou@ZDZ&^V|91;P@WZk|V>1?#z{Wzk zXbL4Hkp*oo27ztL#$&KVrU~QgLjTt<#AGHj{Taa=kVQd%o!i%j|E9J3XEpJEyotWA z{{Nqw=s&i0&C(j{NULY^j zg~tLZ(5d1_%|BE@|DC#x|8+_U^RTx@INDN8u|!i-Bo2k08fHqrDRG3CDJ1A@0aY%> zSe1q}-?hQ}(}h((aKl)C0uBSc&{*N;7wJ?tT%)ZSEHh|MV;Z>QheDs938y%|2*=ZD%EkFu zl^<_~F8!gq4)nxr$9E@yi8JMY^2g+i{*zH*vBZPGfQUB5xJ2`TdBwP3Kt!8jT%!5F zykcB1Afin%F425oUNJ5h5YeU>muNmPuNW5$h-g!cOEe#tSBwh=M6@Z!C7KV+E5-!_ zBH9$=63qwZ72|>d5p9ZbiRJ_IigCe!h&IKzMDu}p#kgQVM4MtYb-8(4*{C@=%^&{%PiEvv%1<4CIE1> MU2aoiy>9cr0hqxY<^TWy literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/creator_inactive_pixel_arrow_right.png b/Habitica/res/drawable-xhdpi/creator_inactive_pixel_arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..18b9ba32778614b6dbf747e729b130ddf043c1dd GIT binary patch literal 18389 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 YUrE|v$JNM{ydCXqzr?QCcFpGh21d*(9RL6T literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/icon_body.png b/Habitica/res/drawable-xhdpi/icon_body.png index d50f8367ac7921a9a4d0291ff72b89d5829d0218..ffbae468ed46b71f34d8276d8ae4eb76b5c26a7f 100644 GIT binary patch literal 2476 zcmV;d2~+loP)Px;W=TXrRCodHn^}k+RTjs)T@sB>jJt8k;u4dLCK|>a#$9v}6&Vr1mwAjUBZ5XB zL=aINM8yRkR3gK;p;1v87|@{Oz6?=GT*j!`Ok!LT_pRICzf;wH>wKrG?pI5lZ+%}+&nS#$U^D~2p$znnbS(Y-{fc2{aHjybqx>bfF2PTGdwW$LaTt+= zk)#>4{MZDK=Bb30!DkdG2D~18A8Z2N!^k{vi%lwPG-xb%CHN!Q z2CT>EMd0s0aWvu}@GWpS;1!%qZ+o=0vW5}(<^+B@con#1Nh5xy{#Ee*V7kb!r#u1F zi$Lq!G;j_myG8IlmGi)xS>yVP1b;JiBx?+~04#z&DsKT#2Dgm~9=Y-0so>*a8O%qZ zEV(gm+m#{6t-+_tT0{N6t44zER^Yc0J|0A-Y;;!*qrM)&jRT*KXoy5EuHzB?|3v!H zXdF|=S8KWi_OF~q{NV6s*9ioBS2#Amb9iFiUdLA}x&(DWPOvNC+k|}vuhz>3{i7Uz z|An{C;fr-{D-Ew=lwb}Ay*<`)_-BI_9BD4 zGH|j9PUPQcl=f9eICU>Nyeh009Hk@iy9oYyPTfp+7drgmVbNPtKyRVFF^z!w6<`RO zx?837b)MKcEi{~z?@Vn%-|f_Y32&EFW>}v%e%J|U3A};n$#X}i{`IDU#P)8E{g+bv z)M=Zu%#pb(l^M1tK^*1;BG$=i5R{K|WbRJun|NY>jq&j{^x!f>`5aR(Qm2gRRs9bd z@6x~}j{H-sAK?yumLsF}rAc_x7~2MVpOi;D_ffVl8Et9)p31cTq<1ERKZ7Cs0c}m2c(qteH|_ZC$B;=RC$nTA*N5C4jx(=4j@S?@I$;Dc7PY?&sScEM6zP}(@Fp2K zksmv}CRo<4lC_6p_+f{42JPx~__?g;gkj-$aJ;efEWP)c;feGTw#<=hg5}xm@K2md z>>I}6L}>5$X2gcbZW87V-$#Z_WlG-p(vF0TLJcA+VTpY&Uawub;Y1}YSrbk-R`ii! zf#IcOM-NlsH7u2{^Yl8x>oEBko`m7(V9;*#US^oDQWOr@gnfmqKK-`=UPoB}1Ad8N z2?e`foXUXMH#V@S5r(lt9D`3fJZ&ko=xO`Ak)8!aRfe zmgs>#n`K_>&}%)xhInfnJGxBF1MU1Rcmu-94A8L&^9*)uSQ8IA09*LRGMb{9X8L&B zXY6?~q#|BNdjles&pb;L#uOWe#>|XXPtS)0>TM?^<^|hY!jibGeJ_RqQQ}@o;qyc< zeaxYqrMZxBjF1+5JH@p2Rd+iK$2FfuBo7SP#(^GWStRs{Ktut-H55~9`Ln!h_NF-&iogHE^ z37gWP)zhPOAP;_YD#{w*sC2~|W2C(pLXi(bA}Qx>b~BbYu}3@RQM<)lJXRX*TITOm^HMLH;ry7^1ut$HYiWGD&N}oVi>ed{5o}P7-VcL zOfj@e7AA~Wt-j&e1+;9}?giWSlDNhX$?j7*H#TI41S8!br2}rp(-|#xfqC4&DkoFFxGjKSIVf|)@wT+DR4qwUd0PHCF6T$JI zHpoh>Pzlgl`7Nm5NeH!dSOcyOmjrD50iJD#ooi4y#?6MU8Aj|(CR56 z5tP*vCxLFlaJB)b8fD=$+z;Nh@YDh7-Q5xlWne{tKE$p?auv7?TaaB7b8-yjCJcFEGtVDCG1i}HBv0xiPIM>)6iub zM{qCaSnkk7QNJKO0O>2i!@zamL-6PGEQ5Ctm{}mCMfsBe zb@QQxJzV4!+c+?N5$MIBi%Frr3hfB?f*$>pX}tox7k=KAJJl@$ z!Q22^xEjVR(C+IhMS>muB}X5Op8zc!Q^{zAQtk+g&@B>K!}2*oRJ^ z*@ihH-LaUC-dWch-Q5{3kZvVm^zhgCv|EzK6NV4Z=I<|INe9`$cVI+lYtSTk3G+sG zV?J9MVM%m0VPbm?tkW3Jp69oYkBn}c3Hu=9X(KV+;niX7?v=2+0hUtQ4K*KS$zY-*~m$*UYOKEwW|h&iIa32L3I z4cNIC)Hli^_=(C(YC8)IXt&%L5S%_tXv$f;qIUxIQ}x_WVAOX7_}di)ohQ9TT_bQA q{x)=FbX0gW1EU!j&A=v{fnNb{nh`s(FmPx-tw}^dRCoc^nrWz2RTRhHGpDS?(n=c~8ceM;r8x-83X7=|cn& zMG+MZ_#s1yM$C$eAc$zNxzIujOG}@oW`j0oz1Q!5J?FlC*Ij42XTPEa>z%#UUi-h+ zUT05d-`CX@iTe8bhQT+%f5HPn+W@@^9vms;crXNY6#NPNZ_s-D{rm72@YaO4@f-z@f%k?d!?R%F=F#s|-T>d*-QC@nXECV2D_2)+3@pl5iP=?C|PCPRGx- zKXBa=&PKqmmIzEHSJ&}J`&UZ((P$Z3$5-jLIC?B2s6QP2jMBi4A$T`Bn7=tXsUCD7 z;;L|RMTYYY=xqYNLsxf^J<0L+Cc3STUaCvt_BcQT{CL>gtu?X+!bOFbR_ z&D1H*CyBT8VX0IC0KE>LV4O+3lpwXQpWxKJ?dUpDEpr;3h~MStFLUaqp}W%2ccvnn z6Jc-RxjRLqz6TCTQ)PHsU*`$VIU#UTUXWrUFLdgEM7K|BQ|k%P634+RbdBl2bF@?c zVJ)XYW3b0M`0u19)M;B@=h!@)+I0K`^f(7ts<|mBp;LjJ{k$zf|M2gAP`qxGRpj57E$j1P&=S!{IP zj2pB?lLi;Umh6F~3xjFa2>AsYSX~)Roe1qIbdANuW)Qp@wse}cP35d9aDHkK zJiU*NNkM&DT$vVPJsI9Q5w13P{@M6W*$v$g~PI*gjL8nyj@bo6W+ za_GkQn>0&bH%oB~7FV6$-*K_T(Va)Xx*dI2TLLhe1CKPuuan*Hj83ALfOU>t43&r5 z=ASr~sE>@pame0r-A#ZuT%Iw2spx$l*f*8h)_s;rK;p!U*Xvhn0+Km(u8CBaj!TU$ z72Dnb6<(mJeVwP5SnmbMM`sD3;Y`>b9NuMEZ4|0QHUU3j`=etQL**sb`fvClhE){o zd1VqW_z)Y&Afq_O$P!<4blL*72<>O;ytiabIu^YI9GHXV#eKB3w+U!7pn>l4J<>II z%Ql3(#WReg+w9=zawLm%GPKn8f^7oY3_xf*041pUAhGm|Rm74R*7`A|*Wh_Eq$b{r zYkR@X1TdsW&~jSZI(e?evA6xH+H*c&2}t6x_+AVRQ{rAj;rpar`j|yOn|+ot6tn=^ zA?;-`1@oNS08`soPmAxx5c;yCSJQTCXb>i#ZFpd40m8PPa~oi2AERvXy%<72Ui>Zn z3==RpY?+kvuC{b!wxoGFko1QE_hJZ5J_?1T+|ti50TUf#&7&;()2S#5$Z1kZHPl#p zF@z>xhC)(qIXs04XsN*XZ@9++NLAk3j&c*6I&hvA--{t^_Ejh(<%yv#Oh8KoMjKd3 z^%a;!o^u;uR@+YX7T=4ZiB0@Em2Ph;b`~avaw7q34Z1_O3rf+c&T~G{Q=n1;l8&wq zJ4|_8xE1OKWlxm$MpbS0(w`i%3zAHA2RD#ZDFO6N-wFqtfb`NYPj$L0yB%)(NI*9g zfawgQ6{)d#ZZon(C9{pdQ8LHDBVir5lqj(}q_yT(Sikd$wbgBgH-%FWj6KjP-jM9@ z4(n9DAGS%8{tob#g5M*+Go^7znK}b@6F}qbfM^ti!~Rfox1m!)mHn{^hc>86k$%|N zg5^ed9lXhDrFxfWtG=D)R_;vxZ0a7BQC@I%+p&1xqBtN>>Mh?8$aRW(0ciqfWdLO+ z0DGNk)xRui^i57)%d#k_Q!{TN%z=wuWlx4p2aHgS&bOP2)`F(p8&W9&*TQ;}mKFfA z%qopsbPzG-(M5G6kFKEdC&%Dc`qsE*9!x?1;c)~;H^IljTj8hCFXCB5pJ6a9$4HCR zHv#L*QVU(U=xLaafYXIh3#Bev#Jcqz4R^yHee5Yy9evP0Zyt$!BdlrE120COb;U<@ z1p@p|*wQU1ro;AJQ31K%6de5vu6}@d0k$-|-?Fn(-Xc*3aie3@Lx$a*!?7(?fu*^; zlAe3ReM2EYfq~Y5I^=yU9aIM}r|l$D*Na?qS~X4D#s5@!_C+{krAUDn!T^{P66VcXgX z;7#bm#;(Ydd2@O93}FmK<>`*Wr;e^8RqX^MUhUam-xzsciB*F25@7vR!E3RNm4M|f zs5=EOaL24rHN&xpmVnA%gA8q5fz5;Uy`Iwev=BUJQC<|tofc=BhP}vF5=Z!Ts4ejU zrsEIBHm-=%QSe5%4C(Tr7U4wx%F=QSE5FdHQ(z7~8dtJcW$p6dj>@Yvb((VCbTMYF zV$}rbdaEqyBBL&8cd=V+7N(}g=B&zSdWP9OCB~%wtzPRyZ31U8tltRoXa|+^J8`B{ zR%ODOE-E#|ZF|XMVEt=d=9M+|l?Z?P(m>w>-XfiaBl%pWomOK^aU6UIV~g^+Uy4M+CUKs| z6go&YJ1(8dt=JIe9GAIe>$t0R`~~OvJ@4=R6W(lJELsVq3jzQDN*?YgzawLg@KlsP zddSdo`y)xk`Jr6^O+)%C0DwHx1BLWYlG>=a@&5o+0 z)7I-a($K@WomVN@w*)h*J-mg8klaM@pwE@>?oHflf_mR zg+)beT$<|5PRfY+HEEf8kCP@c;JdxEnv$TQcm*8Cfxx&3o0H>dmO8zz;8+k;Sfc^u zx$Fk|bB}s(a=6&S5|6ip2#d5h;aLlYFL9pbI18!-kN(=&w%8qha@>H zmU$9^o)DDUXqt)(ksT9JHU4s?G! z8MDc>PsYkQ7KF0Ab(6#(VH2n?hu8O}#py0~@dT?dq}B?kG2&L^F|`+R!{*rMVQzJY zS*r9bC-dA?l{Vg#NA_>i8Vy(di}t+S&JKKFIulasdq-Ic0m~Re*qv67jZ3K)>ey&L zF2DT#JXc%O;XBwlxxu>_)7_{khhZa-7hPsfADx5LAkoz$WN%=2qnp}!4 zFA<_jST92<+wNt<39osPRxI={=$&LqJGHyz%(>B*p1|Z}2dqz#*2$dl-T>AwuBh03 zLDR?{e8OaSum{FS3)mLd)1ttYq2?N&s_##P&SjP& zXW4Oj9I;@(u=144LA+UlML#&sMl_?0!4)kj%T(o7q=+2n$(0S}nVUgPxRrESOea%U zM->&GV`@OHH9?uz?%p9|zPI>u^+9`8vhhC!W2?;hy|LJp-NM#8vtfIBzy)5NR%){X zSFZjHrK+=fbB!CQQtc3JyAq~>Io6Nx27Y@=sd~CH?-fpK-$l>hTWI5pDl;bq3WSoK zzXpC=fBr>m#{>JW`mF7^E<>_hLM90H&S_|BqQ2xo`2m^oRrrGI{A=+mL z;m{E+)o5$xaM7!Cjf{^Ek8jl2jE}gHkb2x-WE?g{Bq;Hv6R1MlSZ`HxHVS3{?LLUe zx65e$KJj76G~_zF~!5ze!z(5))S%jgA_ z^f+?F;Zda43)NoUX#q15n&V@6S~JBY=ejK)oMU8JP%YQd-&Px*Ur9tkRA>e5npIqTyQb)NOEuD^G~m_60cOL(YDdy zDb$tvvn=0~HQ-Hj;*8<7pmz~S-QA_gGZWG@x@n)oZ{JbdH#&s>Kn1s}Q^@BCP4VJJOc0qk+P~ zEl52IJegnMYo6yCXyWZZDlis3XsvY}kuL0luU$BrrCt!UAl{GS-4UZdz<(Q~b~;2v z#}At^X_I)}W4g4U%8M~q#G zu^L?F3{K0-2FBi_HU;VhekZ9C&@t*tLG5r8mKeYO$yTE1UnP$=6N7FA$P1E=_uZfk zLv5b+7B8^wz`-`^{Q=Kbb(?ygVVtGhW$KM6>f-Nq zYuEg9}VGf+7L zWv5fCDpIRs-~n4mOA*I0ms2%FfM331nT*55s50D__wECJswOwY*YzLw%G=1 z=*lH4QddsweOnPHlbNb^7c8QiS2hz18z}EyCa>YDatu!Pb?;RV(m%+Jq)aSq8n-pl zGqz_(?CXW(exSEGx)soYQdb|kD{2S2U<;q{4ekMRdMk&yM%{-mbVfCF z*W>UL7Jbsy^xA|mTvz~K@AnkcM$nwlsGWLKXv_$N3boW3R6BZtB|VV6mf@8NhO$jr zXGyoQw^>HL%Jfy4tmBHMvo=s_&?S|3;ck@*m9eLVSMLWy>LCcao6bXCK$l=!7l8Gq zWsbqG!$9fK_kbf<6N`b!{t6(wmIkSOVi{G+`T#^XqLy@1x(Xkeh1UudDPv0?lHBO% z>h-6$gx(!#Y?We}2rxE))Px;&PhZ;RCodHn@fxoMHt7cXP3owW|@5m2*IEzVgyCNM~pG9h={?12f-K<_p zV>HH?2*!BxV2shAC-I;pfC9=xz_$_*AArh3K$KP3>6vABmStwP+yB?Q)znm1&(!qx z^bEUONljIKUC-ZqRbO{?HDlv$oIo`R7}c!28g=)l`ezInx#i5VmobCQVm6zGFljUU zEVGR+#1ArNY;I@Ctwx7&F6=&BGQiU5^a9(mU$t$vOb3Et7&!o3GqHKXEAe=|OQ(!Z zp1KES+jb(I%De^5c^vT|{p~kmY;}8k`)fKt%H;{tfpT?*c0H5H%(4cpjnJxjBd*ji zK5B1oeG;12Ka#rY78qbHv+UN^wXz}f&0b93`fOxw#Tt>bDAtQ0IP&>L_o@MsXt;)BOpwi3`^r*tA7cQlJ%qY!n^ zL9j&^T1|nKgEbP(A{Yb<+O-xi8Y!L4_OrpkL5j-m9tbw;K&u(Bs9_Ny%d%MSxjqIk z8JQT;o$zHfttPiaBA!>}|9H(ibKc=7UN+4d?-!&?C71ib7>)5=1V3sp5u zu*_82Om&;K?9J}2|;7|0~jYE>x4f6FFS4siZm?}U=hHg#~{}l_Ghzx*6?mn z84LfPs>2^OqXO16ZQ4#^s>@LI#X${Jn;O*;m!a$iDNv_>I46aF|nxl{1hR)>&K zYb{_o!^02mcD@TulRvQ;>DSYprR>r*xqKiy9V< z2Cv=NIaotjMb#dC5NKzW!HbVov6y2Gj|$`B(Mq6^HGGj5tXfF0 zYGMsjcor>wHk^Secm!VMzJ}19o&*DF(GZLUYiRw2K~EAj0qG#n=t0|K4aIuJxS-sk zxO_aSX^6p;vWDNGr(_M?GZX|3vR&}kDMsP3o{BsrMS<3^C}C0WvwgnS@J?JNYv^hk z;L%!iFTB>8hI|#dih)H9i$((=>|BrYY?xAvt`xLmiu_~<-c`u8L=^#x3f7P{jMEDW zcMvvno(*q?;D{@{81aMFi7YZS(!duk7Ohf@U`1^W^SQi@Hf3u#9U6BSUgf@p(4C%y z0%d zKHv9-x8w3w^uyIOz&H(AC%oU9M)_NCJyhol42>m*4znrFXN9a;d_-uITf=TH6GA$^ zR4KIggz}+8eSy(2N%a3FPb(q9Dq{`*@U+dGGhe#U$QnMcs3UyQutl`w-BRq7egZ8} zZb0ewg3fKpJEi%&(i%=fTff7r-1iW=)05gpS~LXFSVKN&Gi7e^z)G3Fpi@N;uspwR zsDj05V5jsS#9PI>kPZUvbCesgH5B_H#ywV&&cUCz2WYd+by#3+oJ3xvbMntEBt;08 zhBe%aV)vsx_v`~fgN&XH=SWpj@&|abhOYHgL7>rES2b(sH%`x#biN7`a$|>OvXCqr<aT_K0&~7MEbdAnS9qvc;!Vl0C_l7EKxCmKfXtZ9I(zMW@4XK}%I1jJ} zd~qRH;C#Cy3xza?Mb>keduJG=F|K^n)1*W7WmM~o1L)*5YjD#t7(971~OWswAM6LrL~kPHH>!%XBR$% zO03}NQXxRFWNY#a7I@Vyh@YnIM4fXL^=?Fc4=dy~7b!K2_saQ38lV00G!KWqH}tiJ z2Y5aq^wYG($RleSS;J?9vX@pAFGAYze7TPs0r3k9pJ&6#n1a8;tK5$ey3>eu?34m z4G3)u%8edt$YJP)l|s|4cU0#ahZf-P1+**R{S1L;Q!+pkqpye$w6VFs>;AnGv~gHE q;D(`XLO6DPx;JV``BRCod9o6B?CL>$K@Iq4%!V!KHoErgZ>%s`L)0p$n-l-I2-A!iQ!HPH5$ zmdC)r437hE=uCQ`Tqy(Xbf7>O+9tS396M$<}Q+b%R+cgwM?71wre7g~iIYg=nq47UYh5ahmoC}1-3rSZmeyBbR&TCOH1;%3p~A(mO2XvjXjl4{s(xogOC*LBhJ*TH&LZP(W>lg+fqK9mnK$zmH z)#_Mtvw708t%JUF$FYWnhSvA&890mbR()v!fu4bhfN~8`K0qUy0rd`yMlTzwRF-ET z^KCeQGCDeJLB_2{qqR9O;JgtB4(3StyD%uQCs)%#VN2NPLCg6;v`T@(Fre(g=~ciR z6zL&9xq}IV0u{M-@L-X{Cvi{l+E}Tq9&6aGrx+d{9uhspOY5A+a6T0UCs#00P`c?U zY&4-*R^w$fN|=bX+M3mB8RvLMqTu8PCT}PNMJTmujc3y&FBDELU=|k_4{Zd@Q#gDw z>nV<74`KMIZnM#vgW)}gxD_?N;}3+hf2W|Jfx=<ciopyCgk_YpIKw^_V=NY^x9FDOF2TAKI1~98@9Q zMfDs)nMKdKlL?q!K=E1(^{HYQy{Qe8G;m%-nV%2}%kCOXZcwN`SS1e(40ue`^E?7? zcLPT)jQ*}{OrB6!*;?@0X9~%uJ*j10K%yki;)rE)kk98*gUK6;s5RC;)%Mzl>Z7|f za8Brjc;QrFa)aWjk5WrKY?^~jIg17?d5uucN#M}Xey3dP^Cq@2c|!52PYvqR@U4AD z(UKV)WnYWhfhe0J)yHtHh)M*e7f`&4a};3?$F+}qgaDh81`gHdQ%`-o^7V6UFu6eq zSD(Mo0IE-FI68o!urhjsvRGE0P*{r)^?4ALdm^`6) z>eIrar&_D={g3+OZ3L~D!Qp?2)^1vq&52Z>b}{$<8o~4eidQwPeO56~q58;49BfJ& zI4_~hNcHjVtDo-y69$DZ!@7U(!-q`m=P4m;pTAMjx4MC&H#BK@dr;#_?oTNMJfqDT z3M(3-K8KM^^^p&q07(oB#K*EZEWaBk!Eh(jCN}M$0Sqat+q)1b>KQVH5}-bvwNFLAH^NEaut$AkC?i#r0K<)draffqjLw=i7}!KT z2X#D;!(@({1VO_C8va*V~D-9f6!%fVYtB+SF{mhvK-@izQo9~4oj0H!9!U96nXA;S@A*tcW3g+Z-_`Q#Q zujS?CNA);8tV0p$a_wVZ3Hx=jA+RonMCeViDM~o6m7?z8bGXQPrnZ8m(#SlNJu=P`Rm(+CJ4U zR&{9L9KH%`stNpxgC8uwV2XK;ghKThGVZv>m=e=_b(kcEgFlK-?s8KfwauzuKH6Mb zTsn@P^Q4+cKfV;ZgC)XcJfMCW6x;dRt7Fr4bY5}`hwuBKj>^p--Z#ren2w*^5Qgbt zmB`SG9|;DPcktE5X{@v#j#ZI1oHg_||BmDK#X)dhMe>B9{A&R7o*}+xQDP|Z?xv^`Lmq$GRl!#sHJQ%9KZedHvrV?%<5 zNzkz3u7l4|PR|Xk+IG)x1j9tanVg(_9edvPd6|{-ZTM+mQ^Qfp>Pv4R7}gd&p^P5# z8hVInN8o=Nj?c#Ee;s#HT}I97M#DF#}Q@~07*qoM6N<$f=(l^ Af&c&j diff --git a/Habitica/res/drawable-xhdpi/icon_skin.png b/Habitica/res/drawable-xhdpi/icon_skin.png index ef265b050806b72d890c54d71d268b2460b900a5..140ab1408fffb94cac25dbe594b6f546375d4d23 100644 GIT binary patch literal 1980 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 swvTB*4pOP#R+!CY`m4FiurIV%eH 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 C9WPn{ literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_active_pixel_arrow_right.png b/Habitica/res/drawable-xxhdpi/creator_active_pixel_arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..7d692f8d7f01afbf39e9926b4c3235b0da3c6976 GIT binary patch literal 18442 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 GUH>0@tTt`{ literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_chair_black.png b/Habitica/res/drawable-xxhdpi/creator_chair_black.png new file mode 100644 index 0000000000000000000000000000000000000000..38a6c96dd80adf650cec83225e0d6bb9422d4fb4 GIT binary patch literal 19117 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 VJD>hS=Kd1^Q$tIGJbkyQe*>={tGxgK literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_chair_pink.png b/Habitica/res/drawable-xxhdpi/creator_chair_pink.png new file mode 100644 index 0000000000000000000000000000000000000000..a85d663d1339f56c473cd0f309950809485b7c79 GIT binary patch literal 19109 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 LR+|@?dF=iVO~j>k literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_chair_red.png b/Habitica/res/drawable-xxhdpi/creator_chair_red.png new file mode 100644 index 0000000000000000000000000000000000000000..5e38cec3c7054d8f038ec0cf4615e38207a5ac1b GIT binary patch literal 19091 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_chair_yellow.png b/Habitica/res/drawable-xxhdpi/creator_chair_yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..a82e43fdf3c32229e1e9a933c93c7a708a749af4 GIT binary patch literal 19134 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_eyewear_special_blacktopframe.png b/Habitica/res/drawable-xxhdpi/creator_eyewear_special_blacktopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..6c0a9f227e6964a5cb46547ed629db16793ba279 GIT binary patch literal 18381 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 O0FJh0P4<8cAn6;ljN#dQVvc702OyWjka*1 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_eyewear_special_greentopframe.png b/Habitica/res/drawable-xxhdpi/creator_eyewear_special_greentopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..300cc1a6c35d0d18b42b0c2407f8d518673d1b72 GIT binary patch literal 18404 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_eyewear_special_redtopframe.png b/Habitica/res/drawable-xxhdpi/creator_eyewear_special_redtopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..fa30c4e6133bb285458a1af08d7077a8b563f710 GIT binary patch literal 18401 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_eyewear_special_whitetopframe.png b/Habitica/res/drawable-xxhdpi/creator_eyewear_special_whitetopframe.png new file mode 100644 index 0000000000000000000000000000000000000000..5e41bcf4f679e71d730e4b5a25a1d3211320636e GIT binary patch literal 18377 zcmeI32T&8+zsDCrI*N)F@rEKIl1f5I455T7AObnx@YG!i@vAtY@DMb4mt}wrYa*mZ1zNG#Tpvx zs%S2X);(4~)xBbpot=XA&9rFwefuKzPIWg?->v#YsZICzzHKL>ci--RzVU?rqtd>Y z)r03BQ#*2dQwnR9%9Yg*JDR!^BGj{N=1h9F?Z&mL=WQsfNL2$Nps8HQ))fut%K;z5 zDU=0zWP61Z-auF#B zhMqv00};$ZF%_sh)DUExKR#Reo%L+Tv{xEm;y%I0)7jD+}fqP?EoJP zpv7^%MgpE70gRJ3#}PPl0VuE0R4V|K)d7rqbkux6VI#2SroMg%usspbvhVSx{Iwuo zv%?r7l~_P2HXzwWE>}jbQ}Xsk%`vKRn!Z5Gj4_UpWQD2>O`M5~#7}(IdlvxGVy8l* z?HvfInUG&oW45no!fNE}D~dyUOlIp~du@);3ILvq!|Mi3(1o)i7Ai&r4j!M|t>Cvx zEp2_@9!|kTtMfowXM=aIP{PLU*#6@B`u4WACyTDxEN9&I-aN>yTwU%x5b$?6<#XTr zXO~|XMB-LPIw*X6R(bcGOZx2E11j5@O)p~{K3`B9`mFOn@0t^{*vD9_)qV21eYQz^ zdvWP{yKD~3zdrZ=5c@@oNxwX`g#escOO@Lgi_BcflK30)^flhZ7vYOaXPRL09M%=py;;?EpI3TfNff&@fmCFcNH^C$`xl*53p;lxi2 z<zm3`7`hG7a?IU6`umipCq{kLt#DMByvG1>D_YB4&pDRhi1pY_M|e5v z^jHLqBkf#ae<^n1O#rv`^Nvyn?7_$acZ)yN&(n%CiLTZ6S2L7MuLWRGRab4!nwzM^vF@DJ%T>>*nssJru6)U^_pI8p z!3vWj?aEcm6oPFKj5*ehJ}y3spEzbBW*guqHK-6(98cg0r!_6z+KhEjwN&5ZC_wDcVJ@h+GvXb$Rv-IO`HL(2) zlt>3n5DRWbwWYLOZ8L4tZqw~quA0KMT6glJ=L;i`+iMriY}ahZw=04PIBTyHNgmCa z$LNy?G0SZ7jum;FcHfyf1;0LtRK0DQlXH6B@k0-0`Azrh2!D%|4RN{u)4;MsoQQubB$&u&rq7dof$mibb`yNnGg2Nyg|nhv2PMO5+^1KynKv{ zj5keQnsr+#`$16K!$s12? zPj1%2%$?cXOaa~UWVr9ZE=Av~E?3=XC*9M|u5K-@La4E37KWJU`fKFuSRYBaW_Y%` ze$xiyl7s=Bl06pLS;t5;(?zD+Sp(^R-Xm zU5c^b3jgfG@rQkK9CO@r9Nv_f<#%PIoGP;`@$HYCV0~lJycP2txG^>3Q#w5BJ)1LB zGp4y(kl*K{vi;MwkCoU4U*TtTC!}6p6_M&9$aorB*70ffX7m7kAn;Shdk1wN#X@xh z#YXj-8IS<{ zbP;qaXj^v5x4Wp6AGM6+o9^SaY-OQ+UP|8FM+cSCqPae`nzc_%TZ^XLnSYI!;+g!wfjgaBEZWu^y=Ry6);p+pDk@pKs`+MF z+amG%bt|8T-G85wT$o(hmDzZ@+pL?{y|d})UHsAcslKM7dslDLp1HTzS*jg9gz<05 z4R@otMRLz~=%ZQaSns^YXD*}%XZJDQPN#mL1|4mswo-^saZi0$-zAn`xOw4@+f_m8 z>Zlgl7X2aiP}oo%kP$Igjw`<_(mHbaxc-k}n{==2vm`fy9}4QbtoNoBTTiu)*_yYt zy&_N7@8+NT^K|<<5^7>=coU+Qgui-pPl@r8vFB>I`n;%}QQkW&_X(qYX4PTi3Bh$u zG*OG~C)>lePm{S=H_~b3B7!kB8?~0wK)i&%WLbsc_}+c!lj7qP;5?gzGR`;S2V8FX z+||4DMam1c){WB>&^K2KLyy%|zKhD3mW7&ZLOyKe61~{`;D1?b8fQ-1JGW;_@Z5c> zp_Mw7Ts?H1SzYuK+6v=2i+dc6UBeFi8CyySHMnk?Zqi=7eO}i7QWp)E=45i}w4@D) zK%51+47=?>?EZB&*}ATAMcmiimz)iEa>1yA!R!1z7tnJKDc$lf+@Cw%7pYogbLtg+ znbBior2;PK&AC#&>o)0dPU?c{uDgY|8}}2BygfS9HMw%~^8-ccJDk0dIzBJUa@Udy zDCWyU$A4TVlL(4?jqyBhi*At-tqb2Wrks{{*kLHZf~tPFX#V8%}cdCYV(_> z$6YJke9*ov=NX@Nq-ay8?%JKN)i^zV>Xs))O(E^tI|a9|BsLv9mz8s^m|e@c&*^;m z6q&kw!r|=rm+=$$8ubn5G+LIP>w5pet`QwyZPZw@t%z29;tJ(rDVTAqrh1_z{UrSz z{S)1+`+oCz#^aCtx^C@_r62HrK5SfG+BZPGb-B??&dc>7=ONhd)L+{r_$0lM}yq3VeiJ==SmNL+n~eML9ew*>PfOs_Dt$u&Rl-U?Jl+M(d(ySpB);1 zn|K6I@eN(nOTWcy=-m1sj@whaH|0>u=5W;CO=}vD7j5id)wHagD0q8GQ~dnC-O!$n zg{2E?R`gsH_Y^d?Pw~F!ophSKI`FmlHDxgFf!mFeBPB`s#Vh=ayTi)PZ{+lKYNrxw zn%|X${xxmr(Zf`dMRQqin4s@^-}{zn&EY}w25Rn<)CbS&&MS2*UH#6g%etP{yz`;u z^1-GjZ=1HPEe}rXt!r}VQ;gbHI~e;uW+H8TOk&KP9U42{q?%Jnq!*S!1D&5UXtnHG z!_?`6#|Q7^PoIVk|M>9DD4}E`KxgbYoRz)tt+>LQJu%-YxC# zst9fh)_HrPWujZ#Cd3w_A-})RzW2PB(H}Q6E^bIcKB4zB%M{rN01JC~bRV&gs|%SW z2t+a10w#zG2^2yXq5wd#3=uL|{-7Aa1i3uEh2GneD|!eX+d|Kq;EHh-(m+3+V^|RA z8Mc_t3iD@?*m{;!RZ0jM3J?g28HkX;0KSMEVxc!2mkj-uG^6zp!(GJw7JAl_ga{wk zB?y`z2t*K21SAWC!yQG(bU zvWKnxmvoS2q30(S3(077aBwgx*c2rQ;-ax65($mLp>a4Q)B`CB<%=01NWMsaB*@n| zwxEa=#1o2n0zN_#m%$XQ7hCA*NfLc~eHmAv@LM9j=nFfDB07X2L}O7H^e;rNuF_?J zfj?D>#C98?Bl$A2pC%O1LxmvP0~86?2eClA4Ip2v|FeT&v%bXu^+%=! zfef)Ah%OKWP)Dk4^!^FDeUela!pN1u;_)RnRr4umxM+07N8^FE3^7QBv_vGv6p6#r zvDo2?G)H12bvY);NKaS{SE%~g3^C*TC`39AM>ZvqaoPmLvi^L2*3v{xjLSskqcx*BgM`ANgnHVI|9E(BX@pvYZfiuS-&4~=QDFGyKm;~bR zAitOY5ZYG2S}!RjDD=qEXA4+R_-_S5200uY0f)yU@f>qJ5{o4=kPIdcL~=-YEZY=h za2PDpuZhM4`yr8A5D(g!7y)DYNXEj3l7R$_DF$Q_kPH%mjl{D!Y$OS1jzyA8@i>Ax ziOFFwnO{@-?fe&);HxB8SlsG{AUP8;*XL4I!CY{$d^|BBcXK}+`Q0N($>REQWG{&y2WWMbJM-kgmja znn49gViQECS=}ME}Q6#Aqe6{1|*L$flydj_qs1f70Cjvpw;Dyoi3> z{r^7~(Z4o#BdhWIo$>2#`{PbZVYA2_K~Nw=OyvbKxFA}{=Tgw4jidEK89j&41Ob8| zR{A0arjVht1+;T9 zhIeU5^FtfFzmH_s4_H6kpNPXiFEm#2`9(U`4VU^#myUJArK3tOK2J==eaQxE9;1?6 zOOc16dP0}|AQc)Kyb0cW2`>Z;@Ui7V=X#OkoJEAP3~S(yp9+0{B^=}UA{;5FF&F2< zyZlHibmb)di9cKmPx_;#lJH-C(d=--SAizQ0}10vm&;gZe==9S@s0g-OXa7pI_ z^U83+fJirGxTN!ed1bg@K%|>8T+;c#yfR!cAks}4F6n$=UKuVJ5b352mvlZbuM8Iq zh;&niOFAEzSB47)M7k-%C7lnBKq?3m>b87>$Q>81>qbUrYz3>OTDbW?^)Ivy&Ijg|;er8?Zpv^;=L7S~aKV5`H)Xh_^MQF~xL`n} zn^JM9jy}i>@}Z}9gQ3TCH5B^U&?CMGmZOI&0EEp2fQW4X@b?h(-3b8eF#zy-4FHf6 z0ARY{!0PMvP~Q(uw$}8JhCdtKRVy*-iqGsQE~nqxZR!quIo@QlV|w#t%Gz5^4h6s2 zwi;zWY6vxNVFwSVaKH<(=~ejPkNQSR1lAmKiGJ6qGg7bUXv%&n2bs4R7w2 z8>iscu2r&jnOAzUN&zzhfEtuF5#yEbSw_}agSFiLyWK}E1Y2`wK+&ew?1%0y20ga^MmT4 z>%(zQKKayX)_=(mN@Nw$y`NcsFe|%$K5wfex!?0o(2$3Q9wmRv{n|1l&V%6Cz6jiL$5&DuT<1h{`62 zE3$|RiXxzhiaUsk%C0OTD)2pr^*QZb4o2q2n zA{TpAr5Q>90H``T*tkRQ4&tYR9Q5khU1$%zDGD5XgaDvCMf{WjQV&c603}x*jkai! zA78{5`tbz_M;Z+w2;p;h0U!W`)u(%K86I6z&HJ0*Sv$o=?RDb2Ybqezt#?FeBp4d& zDylDx(>+wD>2_t3t?dNuo0)O4yLLtG)O0gZ*{<|dzFqh5uFXf{w%;CjzV3+sfCs4X((qJ;TQ3Q-z>WyCJ)r|ICNlv*OabF;0KWx5UiISbwtzPV z(BL>-BLPp50LIaa;{cpK50qD_D;EF?DgeeUE@mz;VI8pQroMg{uq6f1u{PUku^gm=)xIM3*@2#hYru~nc%lV zIde__4o-oZ$%`{7L7b-Ze+xVsB%OHn+*ayKGW- z_Ti4{ZL{7p_xkJy!|c`;lL1+33lTWInkus{0eNCMOZHEvIqKe`^45L;=q=%2d1Ry@ z8|An8d3EUUTZ=*a%-KK`$8k?E0IaYvKrwC?THH_o0GrHcQc( zRLHnuR2r=~!Rn^M6sB%{oQ&^wZ~a{gS}8Ffbgwu}n7qRPaVt*4P0uNT=zw+K&OmrN z==7S0{6dOdW_K}R!A$_S>C@Iyd+grm0ypzVD(7g$C(LGSu{*4MpDn_s#!t;myB~6P zhWSp@L!I|?{nYB?sk9rI@|V-(@z(+{sLHF>XXcwICbI6F(aTfGt(+ zGoceEN86SwnobC{MlfetIe0sJyF7I`ftYDPm{hN5rYO6`tzwQ|;t8j-h8HLOb#0n2 z4jb$3V50wca{Lsu`novUH8X?B+i18s#k+rTJad%sVDbaI2SM)oT_)LS1cw>=iMQ(6 z{sr=+y(WlxH)Gn<+po6c+qK(udzUJu`&tGc{ov7RBJ$%Bx3v$>yw9y+)ug1o|r;dlS;a`d8(t+v6F}QJ)GgE<=4+U^-^?kQq#U!E=l*j z9^C1&f0^`B_Fbro>Q>FoH{!TP)6=HOPvcGxopvhO`S|pQJEq@YV9c5E=_ zXnSz87o3RA;hx|#ERII{3~rP2x$1n?m3GuE^UTV&(n^FfYkFariLSqD?$$NY#A}9U z?$xbdYh02%s8h1TJSY1QiH2W@_bPPn+sm<#Z%YpTa6sgu*lCoN)EBwES>x^8*16ip z3C_h>aG8J3{-pihxemE*x%RKiO!K?5(vO$fmiP=rPqezRaL%$h_T2cYU(-81>O7jV zl(MGM&B^ccQ91s{v=5cogkBEH>PgPHv?40QnV;1hUe@_><_7d2V=(Yz)_Z#uZ@EGh z1Gxs3s%ez##9%%}2YsXA4>#KKtCqB5%zezH=UWnrYbZx*?S8jY+sUh3)@INaSQ%J( z#8A#q*U*Xnir$mzPA@(__xJ+m1OY={PVF}XRl z>OhahhU@S4ccHo7)#}wx@ohy@?##W$OZP~7XwTK+77I7`#qHSUwCN5iiHb_ou57wl z*1k~mK6v@_hzIY}(+blnx=%Em>M`x%^~5$Fyh}JZH^T=nynpp3?U`FgjfL{TeHj0i zyhvA?Yc%&x~+C*7F%gr#cw*f zspHB?UB8=ecAwPk?@X>rsNzkGSrqy5@qKyb3+9fikt%ayVq?6vTI>?UdC#c9CJ{qx z8fn57n~yg8ZJN`#SXa_1z(fH7~nLMgfh-I4GOr_ z@~OKowl%#~xow?RGWzCnLHMDnigz(tQ?pT%P00H#o#R~Q@BNpRy77srJ7@P!37x%5 zDZE0bf~$wFF|CPvN?T?;%ca-Bm>#j`O+qO#+~7L?m`O+RmO0tGOPy7no6^V`Q&ZO> z0&(W#GVJC(3A=->b9Cv6Mch~17o4?s^1zsaq3c0A&ZB4TlfUI(xI6DxAEZ)|_3@XC zB}Pw-%LofyJ5H4fwu>TyC+vne!i#Z*j6Vmq>lHCvb@!# z0!nargHoI3uk*Gpmdm4D*j{8DSnHbG?Uj@tS!NhP_m5t2<@Tm4=Vbg}D|;$+#B6xo z_@sNet2f%G*N6QB zfy+<21O|8CkbNLKD6c=U=t=RTTAc^x4EOlQ^IqFeyz$$mq4c+*NL5o+&)*MJw(1LP z!rQz06jy2YjwCf=+)M#y{UF-9;pLMeV1Nzy-Tfm{Hi(PlYPT) zY6l1upYVl!j9a|=u1yaUxxLjp)Ayxsh(!I>xT@iB(Yj7nRm*BM{@aV{qUR56hj(-? zC|yvstoMSbx1gb8iq{3N)Klb@fv-fbC_{-4U2l{eC`rvPUglri6H#_<9jCubJHxE1 z>0Md)A5(`P*JhB+o67nk`2E-W-?vO{iVT@ESaqkQE_6=M$x_$SmG3OOt?Fn^v9%UU zhZ>*0ZQQuJJT$YfrqRA%E@pG}P{R9oHQKN7De-rc74jCRkN!N zGqi>d58cVvnu?D6Q2Y8xRZViup`_lV#LI!}j}5*me?9$FLuEzftV_4T@Yoga77uh^ z32hA3d3&Tq&9!|!Vx!Tp-(P3md)&_&NSvOSI6Of%x$hGTk8A*d1-(3mx5%6BOlI)| zQA{@97es{x3ZM&70H9ce379N@P=xRWxx65Ay|*Qo^$~U2s082OC*|^;Y<)X43>b#V9{7S5=$Zz2xJTf@%f=gRf0ZILf9O# zyN%uFaFArK=O+>g$Y^wEXecTakK%`L(O43RgvQ{|I2;n{ffR-ZiI`!?Aff)KlP`X3 zKp`uHClK-YK?t#5rZ0bu$XriP9O&!g^SlBDUjqdRKeK}lFu{yVL%}xTmYioK_P!l2n)1b3kHewe>4a->#HBZnvj4IK5P~m3;+Wm z6CpHs><@<^_;LsG)%=@bd{zH+_97lENK28Qu|VkXv%nvJBw=n7Gw{3Fvs zK&FTv!r=1*sH0gncK-z3K8dpmVMJ%LctPTus<{+2+-PjY$NYgdOc6+hY|W4uJQ7D> zV6h_^IUk7;=jAvjqdj3h=uq~vnIh)5Ud$Lc9GQS23j~7z+&T(Bm#&-nsNvj(3i=XkH<4d zCi$)Tcdl*ttTp0Pf?SVoeKwy3x&N9VWN33^i6D-EByi>vkyxx56Up?&fk+OCfMw%B zCWpzwe+e|s*>{0lLwHbSVg`)sBc2Nz3I-A}cnruQBAFy28=4D;jU?gbW05300Y{uq z^5rmneZPeGft&9_Iq-x~K826VGbr0eYL5pP{B7$OMF4N4h6tD;LQuRl&Go+Q&96o0 zYfTZ`jBIf-lO?V`RF*h_K{f^bP3zdOzFK}Z<9)xJe-FW^|8eF&j}htz21!c)QCB0q ze(prb=ZHd?A)pl(%8yg()wL<@qr6!ci*SiVrk&JY?ufFDBV zvq36!RQ#yVSn=y;)A4G!sgGpS@oKo~n5AbBPejFijs|NUXC=Ot zB9B1zfG+z%Dl|2C6TJ5#UKkkQZNr1kdZGBtGJ~Rw*uWJ(H1zqI;W))-!_jmacX2*a zq+@fei)n4Kj{_bOBw_QM6xKwC7BOQE5!u^B3YE;lFSFD zmEwW{kt|AaN#+C7N^!w}NEW5IB=do3rMO@~B#Tm9lKH^2Qd}?~l0_*l$$Vg1DJ~cg z$)XgOWIiyh6c-GLWKoJsG9Q>$iVFrrvM9wRnGZ}W#RUT*S(M_E%m=2G;(`H@EJ|@n z<^$78alwE{7Nxi(^MPrlxL`mei&9*Y`M|VNTreP#MJX=Hd|+BBE*KEWq7;{8J}|8m z7YvAGQHo14ADC8(3kF28D8(h24@@h?1p^{kl;V=i2d0(cf&q~%N^wc%1Jg=z!GK5> zCE`*V`ynqF1pRt96#AJidQC0#=N|xq<={>SfQZ=u5VaWq{u+kfy8vJf1^`~I0swL{ z0BG^|th{aq05S@WHdc(V`Zo=3N);Ftxo371=g{@&*4z?$S^0JicfU@pe>vW2v~R6G zZs(Y@#DAW0ZFojPO{bd%!ZHd#F1>p2UD?^&3xBW6CV!;T)y0k7$-X5=Yu||QR*O}j zhIv^}mp?R~*W|ogQ+9&FNRPReQHGBS`)&L?dg~2ZKcd)g-#6_jpElrv%H4RXIyf0I zPfkHSbKvMxKc&*W+gaZzK<1+PBAacw_KOeJ4bn&a-v9kJ zUt{BeB*g-;x*mIdt*hCvR-stfPttDS4^sdkja$GBqC!0UI8c Y1-dHTIx<}x{2&ozKJSCd*((mfpNnqV$qfwn&R? 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 K%?r)8?)f*A)qr0B literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_hair_bangs_2_brown.png b/Habitica/res/drawable-xxhdpi/creator_hair_bangs_2_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..19f8dfc169afc60d43d654377f179f82409239f1 GIT binary patch literal 18490 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 NPIhj#g*F>@{5MBuV)y_6 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_hair_bangs_2_white.png b/Habitica/res/drawable-xxhdpi/creator_hair_bangs_2_white.png new file mode 100644 index 0000000000000000000000000000000000000000..8b24b8a34fef40e2d283a0d3bce4c1a160e62b41 GIT binary patch literal 18502 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_hair_bangs_3_blond.png b/Habitica/res/drawable-xxhdpi/creator_hair_bangs_3_blond.png new file mode 100644 index 0000000000000000000000000000000000000000..b83cc2bc0ef8e12128480c974355581cdfee06c9 GIT binary patch literal 18514 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_hair_bangs_3_brown.png b/Habitica/res/drawable-xxhdpi/creator_hair_bangs_3_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..7dbfcb43c634e3f290c3a71efca3213377ad17f6 GIT binary patch literal 18485 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 R!h8DK+I+QHp{d8t{{SDmQ+WUY literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_hair_bangs_3_white.png b/Habitica/res/drawable-xxhdpi/creator_hair_bangs_3_white.png new file mode 100644 index 0000000000000000000000000000000000000000..fae1d72602761ae2539f47b78766128678d31d9b GIT binary patch literal 18486 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 M%T*Rd=9_l@2Wq@qmH+?% literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_hair_base_1_black.png b/Habitica/res/drawable-xxhdpi/creator_hair_base_1_black.png new file mode 100644 index 0000000000000000000000000000000000000000..99ec2e46ef06c453b6e27737a05f655440513442 GIT binary patch literal 18422 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_hair_base_1_blond.png b/Habitica/res/drawable-xxhdpi/creator_hair_base_1_blond.png new file mode 100644 index 0000000000000000000000000000000000000000..a342e923ed49e183ce1b6752d7f8105432e7fcf7 GIT binary patch literal 18445 zcmeI32{csw`@pXVk)?f+-a(6G%*vQ)jAg9Z!U$=*X6}rMF@q^fB`VSKl2o>Mwa69~ zMM5EIC)!coLQ>KDQfb5Q4ux(t=RN=b`#=BlJ7?ycnR}n_^L?J@`~7^M?{n{+bMDS% z4pvGEvlRdUP_nT$cZQEEL|=JX_}4JYbR2w`Ah7lb1OUY;qOTN?d}t;BC^&NI^kvJu z`9gl6H(!9Vq0>=<06v@R3jsiIW2y^>;nF$XsPD;JGu!C!{kDAPY4Rv%v)$oS;}+;> zOi*1Kt#SC#G^ff*78WvUSJR`VV`9ShOmotmxJ%)oT${#`m~BU+cU}MdbmLK<`(=I4 zZw;J%K@Z7I4O)5POKuv+7%>nNvz=^u$yDR{A zEHIUATTKQYq5-Up8`~NS~8Dp5#cG1_Lp;W)0?YZYcpfkwN3+_-tHfPrYOB*^{}}V+ zJ-zr0&7EfZ7G0j-Fvxn=qWf8z)}jxbT1S)G7>CYU#gu+;yHM3#Sn;e60D4OKm3Ot} zrNh0qJ*^8Gd}G{il|CN`XWQ)a2Y}V)^Yj?k3yrVH1AuvYgw82bwYQZsbt`1&RE}@1 zRQ$5mV7uA8>MAo;GX+-ooPf29PHZ*P-f`=cy3Sh6T@!U;g_HM=c!9EBmFqcWBZ0~% zP(H0vyDVaYjOkVRDWFDUw3OE_cdZ!t8A*{JG%BrSChwkyx)wdvNz*n?-x}wSm`9t!Hb+Uu$If z6v&bH>!KE4jciM8yVOQ#Q)|=c@l;6lGVwq5!R48@^YwL0XSJ)g6We8>M7*i%(PZbx zS%(>u^kY|;2_#FxNFFb=fNy zH5X3ylB}p4P8OeGd@RhPf2XX+CA&+G^kYuxr`NQW)u0ravkHTCHGGtEcdU=luU>Ha z)}u`ubV?KZ)k}99B5x@tvIo@<5N3a9=SZu zRLGoeZ$x>Qub1PKp?0{`Jm{idW_M!Rh1KC{cKpmIA>|#P=4{6FGx~X-GT&KEbeAoh zI8U}|V(m=oWqp4>RULDs>2D|cs!JyH4DbM$@N|1zNj>%GJ8BXs9^gAtI#M2_v=pyh5xhdT zD68lkWK+<#;9&fn13=qX#OOHgL5RGL@(9Xq2=hUqc)Px6VDsh=&?O+-g8fNxAC=|L)O#DH}Lbl z(DJ3LH|kmHGsV`8GZHaZR|!H6*H*oa%$%OBH(8f*(8MmR$ z0mZ``QOa@K_Qmb>H_Oqmk1yi9^Z|%HJKA4-f_*U1=!s|_YNr&G2G1xV^YVy;4MHxG6-O%dp&&yA& zBNtHpLz)y?r;T5{W4Y`J>bYG-I=p+1xm|7v`C;V?LhXGbR##r%T6tE==ar(XLVM)q zSIrN)Ryn$3JX+3zpLV3G(WdR(l|Qvhrn zpFcsTc`6^wNqC;1?5Fgo@r+W-@-toU-di+b5^iZXm2NAdmmIxFJy!;0UaP&e#F%l6 z@s{z4VbI<1_$>I~gI|5O+Qzc?#Mk$lJj?p}Y1b|^xk|a(-(%l{KHGdQ>@&{anbY~< z;Ah^dJO`eC*A?jo>3%sa<)Q~Ackih;7%`kWiH&=<$xM9!66Hn#t{I)@zqmEf;mfVwUnc|ZC+0)DOyyHz;{r#6uLcdrw z{ibq=Nc9L=+RM1cZS357C!W(&wgF)LkIieFjudU|VAi&*Q{lfkuPS`nU@^G6 zV@cVP+Lb-$ggpgK?Ni*&xh0>Ztl_;BzN8Ms-*LQBdZ;uxzhtFPNq1=Z*^TVJPPH^r z?c=xQA%9OFynio^Z1lLiHn)h8Rdt!^OhU91Xyd~8zejU7rmUZok*$mD0n0sWm{GU;`! zx&>)7296Be$e%GC6ZYZWs|U69iS>sQdJ^I<@-}7kzpQvQ>ts_+Rn6QB*MbSS)o+)7 z?y3xG4pM(}v_-|SZ4+vX_MrF2)9+kvXMT>K6(2t+Bc0g$g-Jj+0l<(jVJ(6je`Xs(+3iwydVzO&q(u4=|xQxmt~~srf-k67tkSZu61Yt zJ$w<>%C=^gIn4q8_y&!@fKY)Y5k;!BX7LUQ>(QprRV2Ga(3`Y9}Y7IO2 z=EocgWCm~rLN4DACGrb;@z)EDG&MzmMm}HX#S@GK@(cXR4yK3+1_c9L#NHc6UlnTQuM1}K@ zLJxpIAwPh@=ljxzvuyPF34VMMWfe->9%OR;L=RPqs2HTt=!%c}gUmr8M1yTfXesF`gb#Z-`&pn6{N4+RfyYy@cnaY=FW>b=`r)&v6d(3YLHe4ZKKLG@c2u(L^@Z5N$~C0@08miNM6;y&!$8 z*U%)tH~+!4IiI;+luEGc;jPc&Ghz252|{6#hH1}91I>S0Shtp(I8o$g(foDEHoK!h(nVJM7+Ks z*^3Q&jm+gIZhi=5%?*U}DP&BZ!Pz!cdt4y@?_0kqe7Qq4L;wZ^LZYo{r1@=cjuf4d znj*3p+Ts+DDXKm+rYM0S78Ubd>*%mXEWes@e_YOghG5wL81rAp2=a#f#HIhRtD#=M zb`r>E3xmJ_$dm(T$Uobg!+yUvL9YI5-y# z;DjWz^qFXo#5Q0PusAYPAN;n^|Md$on#oLW(2oPLXqazv`_}N^w08fjCjO5%(T~;t z|8o=lYil>W8^5oN-wOJVm6Xb2QrP?e9w?-7c_0VE2>duy%xL3izEDT6A#}bkKfs>P zf@tui;%Ci2wSxaUT{isJDJ{_1$_!;=K{vpW4GhqDJ=|C~WBQHpBf3qYz*h^na)Cot z8n*eN4cXsaRP}w=5A`SEvG50j6a9WQ9jiu~dWbh2t45lRTDtmig*5!vXo%)9R-$_; z$`Di+__iOS!BayvA$u?521CB?=3Mw%A1JzJk>NQF*&r1^HT3wE;TXkN!{Kxqb8|ja z<%e70TYvbe12gj2@xujR63+*rmEb}E5id$`iRXjR zN^l{7h!-We#PdODCAbhk#ETMK;`t!75?lx%;zbEA@q7?k2`&T>@uCEmcs>ZN1Q!B` zcu|5&JRgKsf(rpeyePpXo)1DR!G!=KUX zVsR;qzQ_yt!Ef&d!LR8G_8fi+zv7ExT07eVKI0)06<9u zfEoOKYc5*?fE2~X+>{aA`1*0_@8fV&P3mz+q$aQXi)ij(Cna-C73Gzjt{Friu2uBt zxhh+0Z@MWa?WXh@U-yGh!zZ3dJjz{AIOO_UA`0BTl_2x?`Ch%C>*S%j1W{Bc6ybPX1Ql&qvx`dc{N`RJfpVE;T{o9b7&-1T}l8jI4BJ`ns^pe TYfK@E-m12-a4^p|Tf6l?p=?eq literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_hair_base_1_brown.png b/Habitica/res/drawable-xxhdpi/creator_hair_base_1_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..6074ccdc209a91d824666c3f6377259ade84e2ba GIT binary patch literal 18437 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 GJN_H>SyKxD literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_hair_base_1_red.png b/Habitica/res/drawable-xxhdpi/creator_hair_base_1_red.png new file mode 100644 index 0000000000000000000000000000000000000000..78ea9d4773133d1a80fe6f10f920668efa6e4706 GIT binary patch literal 18440 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 KE%MFRZToL1X-TmF literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_hair_base_1_white.png b/Habitica/res/drawable-xxhdpi/creator_hair_base_1_white.png new file mode 100644 index 0000000000000000000000000000000000000000..caf2a4261a4be4c6195f99fd5e0210d706b4c904 GIT binary patch literal 18438 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 MvC6!_Z1c|l00X^MjsO4v literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_hair_base_3_black.png b/Habitica/res/drawable-xxhdpi/creator_hair_base_3_black.png new file mode 100644 index 0000000000000000000000000000000000000000..ad1a2fbcece38d315be7e80def14c3daf88655d7 GIT binary patch literal 18487 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_hair_base_3_blond.png b/Habitica/res/drawable-xxhdpi/creator_hair_base_3_blond.png new file mode 100644 index 0000000000000000000000000000000000000000..678523f571de6ecb0317d9b32a9e85bb7e1d3e98 GIT binary patch literal 18519 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 V@wMoi2G#-4VQcAVk#Fu5{U52OQH}rr literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_hair_base_3_brown.png b/Habitica/res/drawable-xxhdpi/creator_hair_base_3_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..a2414a91869e53f92e52a5970bdb3511d4ed83f7 GIT binary patch literal 18510 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 P5&>)Tb!Pdd9=rb==<8WK literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_hair_base_3_red.png b/Habitica/res/drawable-xxhdpi/creator_hair_base_3_red.png new file mode 100644 index 0000000000000000000000000000000000000000..ab8df778c5711578784119ddff22da0c63421f94 GIT binary patch literal 18520 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 XerS{T1`XT@03CK#PL@R$J~96RMtEJ5 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_hair_base_3_white.png b/Habitica/res/drawable-xxhdpi/creator_hair_base_3_white.png new file mode 100644 index 0000000000000000000000000000000000000000..5afa310e6af619c753656bec69678020edb97534 GIT binary patch literal 18505 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 KSQl9NZ~1Q~6HO2R literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_hair_flower_1.png b/Habitica/res/drawable-xxhdpi/creator_hair_flower_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c39bb1ec3ae6dc42d547a9f7f33b32ea36d5866f GIT binary patch literal 18235 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_hair_flower_2.png b/Habitica/res/drawable-xxhdpi/creator_hair_flower_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1a2a32a7777d0802771629fb29fe611ee73a5ee6 GIT binary patch literal 18239 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 Z0-N?~CN0rwEPzG8$b9vt9eV%8(zxR2cckfwi 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 X!E~i12ef~MMZm#kg>`||#_j(N0JQ9J literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_hair_flower_4.png b/Habitica/res/drawable-xxhdpi/creator_hair_flower_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8904132c9a82f277938a8e04af2be3334d3aa234 GIT binary patch literal 18236 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 Z1KT$0H0b>SXh9<2;;_`d&~Dwf{{}mk@o4}6 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_hair_flower_6.png b/Habitica/res/drawable-xxhdpi/creator_hair_flower_6.png new file mode 100644 index 0000000000000000000000000000000000000000..25eecec610c5edb3adca377fab38d5d1c3fec96a GIT binary patch literal 18235 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_inactive_pixel_arrow_left.png b/Habitica/res/drawable-xxhdpi/creator_inactive_pixel_arrow_left.png new file mode 100644 index 0000000000000000000000000000000000000000..e11287fcde9a9dbba3541c97a4ebb70e3cf764d3 GIT binary patch literal 18469 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/creator_inactive_pixel_arrow_right.png b/Habitica/res/drawable-xxhdpi/creator_inactive_pixel_arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..05b4326553b7997b2500acf9c01bd3a5437002fa GIT binary patch literal 18491 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 Vs!JSSNuI%WvRi6fVB@#tzX5aWQZfJl literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/icon_body.png b/Habitica/res/drawable-xxhdpi/icon_body.png index 01565581ce39c7476fc280082aa65fcfa5f505b4..b05cd97da830aea44b81b92b421d497fe158e1e2 100644 GIT binary patch literal 3681 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¬kE6F#E|iC)?Y8y3K~%P2{h)Z6Xq?7aMb_X%2f% z?u~K7!?~&$sHz*1ST%Y&o919+JwRCMRx=tRVL!_nlbr9^#dYN3pVSw1LYJYHlAQ~J zcl$Mk(^;@yw+Mw!6}59gN^cAxDfZmc`w&r?MzEn{&NUW($oH|VHS#l>Q1Q3k$2vDT zT?~p@hSiwG>{3lS(BTG#l_Q~Z(kHRSX`b3PY+{C2NQexrfy>aQtLyySS2RyT;+zsR z5NKyDe2b|^ADk$eP_Y+b{Y6etq91x?A;L+@qEADL!lIMWE_|~)^AUNp{L|iN^cL~% z3jj)%^Rcj#8Qf7~4d^XoIxu=m4%75b{-R4xvcva(rNzZA-T;nvm+p`%n& z0w0r>4@Y6bc%xI872^StiiZKMT?hNtDUxI1sAtARPZHzr7N$=b0Lfqas;{XRuTO&` z&kUGSjG31{u!x1eo+hCl+V?Yt{*0!2$#F)kmlmW6D#Q5%S{^m^zb{J^pdFsd_{*Fk zI(p+%-jef_cwzpNVWq{kIbU~=CRhKKJh3U#?$)@5UuA}A%DL0kJ$?X@Uwj1&Pa(ag zz;^;l(L`>Y+_S&pI#s1R%Lu7AV@~W4EJ)`UmN?*X<7Y@#Q>;kjJLIO2scOU5M{%sp zDpH}K*8`@=%!ifa$J)dLGh-An?P^sD1D6^wRtA_Asp_dX?;&&k*MohhUw;XF%wO_+JlfxqaciPiI+r3V+U7Xcfe{QkH+*YWr)4(Oc%xC**sAS!!( zx4a}G_%r!rS*OE1x5D6^AiP;RrPiP3OA?q-xayfbq>XM@Def zA1vtE+PtFkAB!v2!T;HSjAw(B>cS@%-)OV4`V6xMHuHj<-2Q}o+F#rGn literal 2455 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 literal 3451 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%0DxY^Jv`;DBPspYv3)!MA_Z>`eIp=uAJtLl2<&KU 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 IM6N<$f+Oh0uK)l5 diff --git a/Habitica/res/drawable/setup_customization_bg.xml b/Habitica/res/drawable/setup_customization_bg.xml new file mode 100644 index 000000000..515f856bb --- /dev/null +++ b/Habitica/res/drawable/setup_customization_bg.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/Habitica/res/drawable/setup_customization_bg_selected.xml b/Habitica/res/drawable/setup_customization_bg_selected.xml new file mode 100644 index 000000000..690256892 --- /dev/null +++ b/Habitica/res/drawable/setup_customization_bg_selected.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/Habitica/res/drawable/setup_customization_circle.xml b/Habitica/res/drawable/setup_customization_circle.xml new file mode 100644 index 000000000..59f17d3c5 --- /dev/null +++ b/Habitica/res/drawable/setup_customization_circle.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Habitica/res/layout/activity_setup.xml b/Habitica/res/layout/activity_setup.xml index c4f6ebbc4..eaae781fb 100644 --- a/Habitica/res/layout/activity_setup.xml +++ b/Habitica/res/layout/activity_setup.xml @@ -22,7 +22,8 @@ android:background="@color/brand_300" android:paddingLeft="21dp" android:paddingRight="21dp" - android:gravity="center_vertical"> + android:gravity="center_vertical" + android:elevation="4dp">