mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-31 19:20:34 +00:00
Added notificaiton data model. Added login incentive notification dialogs
This commit is contained in:
parent
d8dc4715ce
commit
fef633e7b5
5 changed files with 155 additions and 48 deletions
46
Habitica/res/layout/dialog_login_incentive.xml
Normal file
46
Habitica/res/layout/dialog_login_incentive.xml
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:id="@+id/imageView" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:text=""
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/imageView"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="50dp"
|
||||
android:layout_marginLeft="25dp"
|
||||
android:layout_marginRight="25dp"
|
||||
android:id="@+id/you_earned_message" />
|
||||
|
||||
<TextView
|
||||
android:text=""
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/you_earned_message"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="50dp"
|
||||
android:id="@+id/next_unlock_message" />
|
||||
|
||||
<Button
|
||||
android:text="@string/see_you_tomorrow"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/next_unlock_message"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="50dp"
|
||||
android:id="@+id/confirm_button"
|
||||
style="@style/Widget.AppCompat.Button.Borderless.Colored" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
@ -436,7 +436,10 @@ To start, which parts of your life do you want to improve?</string>
|
|||
<string name="open_market">Open Market</string>
|
||||
<string name="cds_description" formatted="false">Your Dailies will next reset the first time you use Habitica after %1$s. Make sure you have completed your Dailies before this time!</string>
|
||||
|
||||
|
||||
<string name="AudioTheme_title">Audio Theme</string>
|
||||
<string name="AudioTheme_summary">Change Habitica\'s Audio Theme</string>
|
||||
|
||||
<!-- Login Incentives -->
|
||||
<string name="see_you_tomorrow">See you tomorrow!</string>
|
||||
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import com.google.gson.reflect.TypeToken;
|
|||
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.ui.helpers.DataBindingUtils;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.ApiService;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.Server;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.ChatMessage;
|
||||
|
|
@ -70,9 +71,17 @@ 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;
|
||||
|
|
@ -331,38 +340,38 @@ public class APIHelper implements Action1<Throwable> {
|
|||
if (withTasks) {
|
||||
Observable<HabitResponse<TaskList>> tasksObservable = apiService.getTasks();
|
||||
|
||||
// userObservable = Observable.zip(userObservable, tasksObservable,
|
||||
// new Func2<HabitResponse<HabitRPGUser>, HabitResponse<TaskList>, HabitRPGUser>() {
|
||||
// @Override
|
||||
// public HabitRPGUser call(HabitResponse<HabitRPGUser> habitRPGUserHabitResponse, HabitResponse<TaskList> taskListHabitResponse) {
|
||||
// HabitRPGUser habitRPGUser = habitRPGUserHabitResponse.getData();
|
||||
// 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;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// habitRPGUserHabitResponse.data = habitRPGUser;
|
||||
// return habitRPGUserHabitResponse;
|
||||
// }
|
||||
// });
|
||||
userObservable = Observable.zip(userObservable, tasksObservable,
|
||||
new Func2<HabitResponse<HabitRPGUser>, HabitResponse<TaskList>, HabitResponse<HabitRPGUser>>() {
|
||||
@Override
|
||||
public HabitResponse<HabitRPGUser> call(HabitResponse<HabitRPGUser> habitRPGUserHabitResponse, HabitResponse<TaskList> taskListHabitResponse) {
|
||||
HabitRPGUser habitRPGUser = habitRPGUserHabitResponse.getData();
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
habitRPGUserHabitResponse.data = habitRPGUser;
|
||||
return habitRPGUserHabitResponse;
|
||||
}
|
||||
});
|
||||
}
|
||||
return userObservable;
|
||||
}
|
||||
|
|
@ -423,22 +432,50 @@ public class APIHelper implements Action1<Throwable> {
|
|||
|
||||
HabiticaApplication.currentActivity.runOnUiThread(() -> {
|
||||
if (!(HabiticaApplication.currentActivity).isFinishing() && displayedAlert == null) {
|
||||
Log.v("Testhere", String.valueOf(notifications));
|
||||
for (Notification notification: notifications) {
|
||||
Log.v("TestNotif", notification.getAdditionalProperties().toString());
|
||||
}
|
||||
// AlertDialog.Builder builder = new AlertDialog.Builder(HabiticaApplication.currentActivity)
|
||||
// .setTitle(resourceTitleString)
|
||||
// .setMessage(resourceMessageString)
|
||||
// .setNeutralButton(android.R.string.ok, (dialog, which) -> {
|
||||
// displayedAlert = null;
|
||||
// });
|
||||
//
|
||||
// if (!resourceTitleString.isEmpty()) {
|
||||
// builder.setIcon(R.drawable.ic_warning_black);
|
||||
// }
|
||||
|
||||
// displayedAlert = builder.show();
|
||||
if (!notification.getType().equals("LOGIN_INCENTIVE")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String title = notification.data.message;
|
||||
String youEarnedMessage = "";
|
||||
|
||||
LayoutInflater factory = LayoutInflater.from(HabiticaApplication.currentActivity);
|
||||
final View view = factory.inflate(R.layout.dialog_login_incentive, null);
|
||||
|
||||
ImageView imageView = (ImageView) view.findViewById(R.id.imageView);
|
||||
String imageKey = "inventory_present_11";
|
||||
if (notification.data.rewardKey != null) {
|
||||
imageKey = notification.data.rewardKey.get(0);
|
||||
youEarnedMessage = "You earned a " + imageKey + " as a reward for your devotion to improving your life.";
|
||||
}
|
||||
DataBindingUtils.loadImage(imageView, imageKey);
|
||||
|
||||
String message = "Your next prize unlocks at " + notification.data.nextRewardAt + " Check-Ins";
|
||||
TextView nextUnlockTextView = (TextView) view.findViewById(R.id.next_unlock_message);
|
||||
nextUnlockTextView.setText(message);
|
||||
|
||||
TextView youEarnedTexView = (TextView) view.findViewById(R.id.you_earned_message);
|
||||
youEarnedTexView.setText(youEarnedMessage);
|
||||
|
||||
Button confirmButton = (Button) view.findViewById(R.id.confirm_button);
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(HabiticaApplication.currentActivity)
|
||||
.setTitle(title)
|
||||
.setView(view)
|
||||
.setMessage("");
|
||||
|
||||
final AlertDialog dialog = builder.create();
|
||||
dialog.show();
|
||||
|
||||
confirmButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
dialog.hide();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,10 @@ package com.magicmicky.habitrpgwrapper.lib.models;
|
|||
* Created by krh12 on 11/28/2016.
|
||||
*/
|
||||
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.notifications.NotificationData;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -11,7 +15,7 @@ public class Notification {
|
|||
|
||||
private String type;
|
||||
private String createdAt;
|
||||
// private T data;
|
||||
public NotificationData data;
|
||||
private String id;
|
||||
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.models.notifications;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by krh12 on 11/30/2016.
|
||||
*/
|
||||
|
||||
public class NotificationData {
|
||||
|
||||
public String groupId;
|
||||
public String message;
|
||||
public Integer nextRewardAt;
|
||||
public String rewardText;
|
||||
public List<String> rewardKey;
|
||||
|
||||
}
|
||||
Loading…
Reference in a new issue