mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-20 04:39:04 +00:00
remove PostChallenge & use custom Challenge-serializer
This commit is contained in:
parent
1034b2471c
commit
aebb9125d1
9 changed files with 41 additions and 71 deletions
|
|
@ -28,7 +28,6 @@ import com.habitrpg.android.habitica.models.responses.UnlockResponse;
|
|||
import com.habitrpg.android.habitica.models.tasks.ItemData;
|
||||
import com.habitrpg.android.habitica.models.tasks.Task;
|
||||
import com.habitrpg.android.habitica.models.tasks.TaskList;
|
||||
import com.habitrpg.android.habitica.models.social.PostChallenge;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
@ -289,7 +288,7 @@ public interface ApiService {
|
|||
Observable<HabitResponse<Void>> leaveChallenge(@Path("challengeId") String challengeId, @Body LeaveChallengeBody body);
|
||||
|
||||
@POST("challenges")
|
||||
Observable<HabitResponse<Challenge>> createChallenge(@Body PostChallenge challenge);
|
||||
Observable<HabitResponse<Challenge>> createChallenge(@Body Challenge challenge);
|
||||
|
||||
@POST("tasks/challenge/{challengeId}")
|
||||
Observable<HabitResponse<Task>> createChallengeTask(@Path("challengeId") String challengeId, @Body Task task);
|
||||
|
|
@ -298,7 +297,7 @@ public interface ApiService {
|
|||
Observable<HabitResponse<List<Task>>> createChallengeTasks(@Path("challengeId") String challengeId, @Body List<Task> tasks);
|
||||
|
||||
@PUT("challenges/{challengeId}")
|
||||
Observable<HabitResponse<Challenge>> updateChallenge(@Path("challengeId") String challengeId, @Body PostChallenge challenge);
|
||||
Observable<HabitResponse<Challenge>> updateChallenge(@Path("challengeId") String challengeId, @Body Challenge challenge);
|
||||
|
||||
@DELETE("challenges/{challengeId}")
|
||||
Observable<HabitResponse<Void>> deleteChallenge(@Path("challengeId") String challengeId);
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import com.habitrpg.android.habitica.models.social.Challenge;
|
|||
import com.habitrpg.android.habitica.models.social.ChatMessage;
|
||||
import com.habitrpg.android.habitica.models.ContentResult;
|
||||
import com.habitrpg.android.habitica.models.social.Group;
|
||||
import com.habitrpg.android.habitica.models.social.PostChallenge;
|
||||
import com.habitrpg.android.habitica.models.user.HabitRPGUser;
|
||||
import com.habitrpg.android.habitica.models.user.Items;
|
||||
import com.habitrpg.android.habitica.models.LeaveChallengeBody;
|
||||
|
|
@ -201,11 +200,11 @@ public interface ApiClient {
|
|||
|
||||
Observable<Void> leaveChallenge(String challengeId, LeaveChallengeBody body);
|
||||
|
||||
Observable<Challenge> createChallenge(PostChallenge challenge);
|
||||
Observable<Challenge> createChallenge(Challenge challenge);
|
||||
|
||||
Observable<Task> createChallengeTask(String challengeId, Task task);
|
||||
Observable<List<Task>> createChallengeTasks(String challengeId, List<Task> tasks);
|
||||
Observable<Challenge> updateChallenge(PostChallenge challenge);
|
||||
Observable<Challenge> updateChallenge(Challenge challenge);
|
||||
Observable<Void> deleteChallenge(String challengeId);
|
||||
|
||||
//DEBUG: These calls only work on a local development server
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package com.habitrpg.android.habitica.data;
|
|||
|
||||
import com.habitrpg.android.habitica.models.social.Challenge;
|
||||
import com.habitrpg.android.habitica.models.social.Group;
|
||||
import com.habitrpg.android.habitica.models.social.PostChallenge;
|
||||
import com.habitrpg.android.habitica.models.tasks.Task;
|
||||
import com.habitrpg.android.habitica.models.tasks.TaskList;
|
||||
|
||||
|
|
@ -14,7 +13,7 @@ public interface ChallengeRepository extends BaseRepository {
|
|||
Observable<Challenge> getChallenge(String challengeId);
|
||||
Observable<TaskList> getChallengeTasks(String challengeId);
|
||||
|
||||
Observable<Challenge> createChallenge(PostChallenge challenge, List<Task> taskList);
|
||||
Observable<Challenge> createChallenge(Challenge challenge, List<Task> taskList);
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -25,7 +24,7 @@ public interface ChallengeRepository extends BaseRepository {
|
|||
* @param removedTaskList tasks that has be to be removed
|
||||
* @return
|
||||
*/
|
||||
Observable<Challenge> updateChallenge(PostChallenge challenge, List<Task> fullTaskList,
|
||||
Observable<Challenge> updateChallenge(Challenge challenge, List<Task> fullTaskList,
|
||||
List<Task> addedTaskList, List<Task> updatedTaskList, List<String> removedTaskList);
|
||||
Observable<Void> deleteChallenge(String challengeId);
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ import com.habitrpg.android.habitica.R;
|
|||
import com.habitrpg.android.habitica.data.ApiClient;
|
||||
import com.habitrpg.android.habitica.database.CheckListItemExcludeStrategy;
|
||||
import com.habitrpg.android.habitica.helpers.PopupNotificationsManager;
|
||||
import com.habitrpg.android.habitica.models.social.PostChallenge;
|
||||
import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.api.ApiService;
|
||||
import com.habitrpg.android.habitica.api.Server;
|
||||
|
|
@ -66,7 +65,7 @@ import com.habitrpg.android.habitica.models.tasks.Task;
|
|||
import com.habitrpg.android.habitica.models.tasks.TaskList;
|
||||
import com.habitrpg.android.habitica.models.tasks.TaskTag;
|
||||
import com.habitrpg.android.habitica.utils.BooleanAsIntAdapter;
|
||||
import com.habitrpg.android.habitica.utils.ChallengeDeserializer;
|
||||
import com.habitrpg.android.habitica.utils.ChallengeSerializer;
|
||||
import com.habitrpg.android.habitica.utils.ChatMessageDeserializer;
|
||||
import com.habitrpg.android.habitica.utils.ChecklistItemSerializer;
|
||||
import com.habitrpg.android.habitica.utils.ContentDeserializer;
|
||||
|
|
@ -268,7 +267,7 @@ public class ApiClientImpl implements Action1<Throwable>, ApiClient {
|
|||
.registerTypeAdapter(Task.class, new TaskSerializer())
|
||||
.registerTypeAdapter(ContentResult.class, new ContentDeserializer())
|
||||
.registerTypeAdapter(FeedResponse.class, new FeedResponseDeserializer())
|
||||
.registerTypeAdapter(Challenge.class, new ChallengeDeserializer())
|
||||
.registerTypeAdapter(Challenge.class, new ChallengeSerializer())
|
||||
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
|
||||
.create();
|
||||
return GsonConverterFactory.create(gson);
|
||||
|
|
@ -828,7 +827,7 @@ public class ApiClientImpl implements Action1<Throwable>, ApiClient {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Observable<Challenge> createChallenge(PostChallenge challenge) {
|
||||
public Observable<Challenge> createChallenge(Challenge challenge) {
|
||||
return apiService.createChallenge(challenge).compose(configureApiCallObserver());
|
||||
}
|
||||
|
||||
|
|
@ -844,7 +843,7 @@ public class ApiClientImpl implements Action1<Throwable>, ApiClient {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Observable<Challenge> updateChallenge(PostChallenge challenge) {
|
||||
public Observable<Challenge> updateChallenge(Challenge challenge) {
|
||||
return apiService.updateChallenge(challenge.id, challenge).compose(configureApiCallObserver());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ import com.habitrpg.android.habitica.data.ChallengeRepository;
|
|||
import com.habitrpg.android.habitica.data.local.ChallengeLocalRepository;
|
||||
import com.habitrpg.android.habitica.models.social.Challenge;
|
||||
import com.habitrpg.android.habitica.models.social.Group;
|
||||
import com.habitrpg.android.habitica.models.social.PostChallenge;
|
||||
import com.habitrpg.android.habitica.models.tasks.Task;
|
||||
import com.habitrpg.android.habitica.models.tasks.TaskList;
|
||||
import com.habitrpg.android.habitica.models.tasks.TasksOrder;
|
||||
|
|
@ -72,7 +71,7 @@ public class ChallengeRepositoryImpl extends BaseRepositoryImpl<ChallengeLocalRe
|
|||
}
|
||||
|
||||
@Override
|
||||
public Observable<Challenge> createChallenge(PostChallenge challenge, List<Task> taskList) {
|
||||
public Observable<Challenge> createChallenge(Challenge challenge, List<Task> taskList) {
|
||||
challenge.tasksOrder = getTaskOrders(taskList);
|
||||
|
||||
return Observable.create(subscriber -> {
|
||||
|
|
@ -87,7 +86,7 @@ public class ChallengeRepositoryImpl extends BaseRepositoryImpl<ChallengeLocalRe
|
|||
}
|
||||
|
||||
@Override
|
||||
public Observable<Challenge> updateChallenge(PostChallenge challenge, List<Task> fullTaskList,
|
||||
public Observable<Challenge> updateChallenge(Challenge challenge, List<Task> fullTaskList,
|
||||
List<Task> addedTaskList, List<Task> updatedTaskList, List<String> removedTaskList) {
|
||||
|
||||
ArrayList<Observable> observablesToWait = new ArrayList<>($.map(updatedTaskList, t -> apiClient.updateTask(t.getId(), t)));
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package com.habitrpg.android.habitica.models.social;
|
||||
|
||||
import com.habitrpg.android.habitica.HabitDatabase;
|
||||
import com.habitrpg.android.habitica.models.social.Group;
|
||||
import com.habitrpg.android.habitica.models.tasks.TasksOrder;
|
||||
import com.habitrpg.android.habitica.models.user.HabitRPGUser;
|
||||
import com.raizlabs.android.dbflow.annotation.Column;
|
||||
import com.raizlabs.android.dbflow.annotation.NotNull;
|
||||
|
|
@ -9,8 +9,6 @@ import com.raizlabs.android.dbflow.annotation.PrimaryKey;
|
|||
import com.raizlabs.android.dbflow.annotation.Table;
|
||||
import com.raizlabs.android.dbflow.structure.BaseModel;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
@Table(databaseName = HabitDatabase.NAME)
|
||||
public class Challenge extends BaseModel {
|
||||
|
||||
|
|
@ -73,25 +71,5 @@ public class Challenge extends BaseModel {
|
|||
|
||||
public HabitRPGUser leader;
|
||||
|
||||
public HashMap<String, String[]> getTasksOrder() {
|
||||
HashMap<String, String[]> map = new HashMap();
|
||||
|
||||
if (!dailyList.isEmpty()) {
|
||||
map.put(TASK_ORDER_DAILYS, dailyList.split(","));
|
||||
}
|
||||
|
||||
if (!habitList.isEmpty()) {
|
||||
map.put(TASK_ORDER_HABITS, habitList.split(","));
|
||||
}
|
||||
|
||||
if (!rewardList.isEmpty()) {
|
||||
map.put(TASK_ORDER_REWARDS, rewardList.split(","));
|
||||
}
|
||||
|
||||
if (!todoList.isEmpty()) {
|
||||
map.put(TASK_ORDER_TODOS, todoList.split(","));
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
public TasksOrder tasksOrder;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,23 +0,0 @@
|
|||
package com.habitrpg.android.habitica.models.social;
|
||||
|
||||
import com.habitrpg.android.habitica.models.tasks.TasksOrder;
|
||||
|
||||
/**
|
||||
* Needs to be a separate Class, the normal Challenge has the group as Object
|
||||
* The Challenge for adding/updating just has the group as id
|
||||
*/
|
||||
public class PostChallenge {
|
||||
public String id;
|
||||
|
||||
public String name;
|
||||
|
||||
public String shortName;
|
||||
|
||||
public String description;
|
||||
|
||||
public String group;
|
||||
|
||||
public int prize;
|
||||
|
||||
public TasksOrder tasksOrder;
|
||||
}
|
||||
|
|
@ -33,10 +33,10 @@ import com.habitrpg.android.habitica.data.ChallengeRepository;
|
|||
import com.habitrpg.android.habitica.events.TaskSaveEvent;
|
||||
import com.habitrpg.android.habitica.events.TaskTappedEvent;
|
||||
import com.habitrpg.android.habitica.events.commands.DeleteTaskCommand;
|
||||
import com.habitrpg.android.habitica.models.social.Challenge;
|
||||
import com.habitrpg.android.habitica.models.social.Group;
|
||||
import com.habitrpg.android.habitica.models.tasks.Task;
|
||||
import com.habitrpg.android.habitica.ui.adapter.social.challenges.ChallengeTasksRecyclerViewAdapter;
|
||||
import com.habitrpg.android.habitica.models.social.PostChallenge;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
|
@ -436,8 +436,8 @@ public class CreateChallengeActivity extends BaseActivity {
|
|||
startActivityForResult(intent, 1);
|
||||
}
|
||||
|
||||
private PostChallenge getChallengeData() {
|
||||
PostChallenge c = new PostChallenge();
|
||||
private Challenge getChallengeData() {
|
||||
Challenge c = new Challenge();
|
||||
|
||||
int locationPos = challengeLocationSpinner.getSelectedItemPosition();
|
||||
Group locationGroup = locationAdapter.getItem(locationPos);
|
||||
|
|
@ -446,7 +446,7 @@ public class CreateChallengeActivity extends BaseActivity {
|
|||
c.id = challengeId;
|
||||
}
|
||||
|
||||
c.group = locationGroup.id;
|
||||
c.groupId = locationGroup.id;
|
||||
c.name = createChallengeTitle.getText().toString();
|
||||
c.description = createChallengeDescription.getText().toString();
|
||||
c.shortName = createChallengeTag.getText().toString();
|
||||
|
|
@ -456,7 +456,7 @@ public class CreateChallengeActivity extends BaseActivity {
|
|||
}
|
||||
|
||||
private void createChallenge() {
|
||||
PostChallenge c = getChallengeData();
|
||||
Challenge c = getChallengeData();
|
||||
|
||||
List<Task> taskList = challengeTasks.getTaskList();
|
||||
taskList.remove(addHabit);
|
||||
|
|
@ -472,7 +472,7 @@ public class CreateChallengeActivity extends BaseActivity {
|
|||
}
|
||||
|
||||
private void updateChallenge() {
|
||||
PostChallenge c = getChallengeData();
|
||||
Challenge c = getChallengeData();
|
||||
|
||||
List<Task> taskList = challengeTasks.getTaskList();
|
||||
taskList.remove(addHabit);
|
||||
|
|
|
|||
|
|
@ -6,13 +6,15 @@ import com.google.gson.JsonElement;
|
|||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParseException;
|
||||
|
||||
import com.google.gson.JsonSerializationContext;
|
||||
import com.google.gson.JsonSerializer;
|
||||
import com.habitrpg.android.habitica.models.social.Challenge;
|
||||
|
||||
import android.text.TextUtils;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
|
||||
public class ChallengeDeserializer implements JsonDeserializer<Challenge> {
|
||||
public class ChallengeSerializer implements JsonDeserializer<Challenge>, JsonSerializer<Challenge> {
|
||||
@Override
|
||||
public Challenge deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
|
||||
|
||||
|
|
@ -93,4 +95,22 @@ public class ChallengeDeserializer implements JsonDeserializer<Challenge> {
|
|||
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public JsonElement serialize(Challenge src, Type typeOfSrc, JsonSerializationContext context) {
|
||||
JsonObject object = new JsonObject();
|
||||
object.addProperty("id", src.id);
|
||||
object.addProperty("name", src.name);
|
||||
object.addProperty("shortName", src.shortName);
|
||||
object.addProperty("description", src.description);
|
||||
object.addProperty("memberCount", src.memberCount);
|
||||
object.addProperty("prize", src.prize);
|
||||
object.addProperty("official", src.official);
|
||||
|
||||
object.addProperty("group", src.groupId);
|
||||
object.add("tasksOrder", context.serialize(src.tasksOrder));
|
||||
|
||||
|
||||
return object;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue