mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-20 20:59:00 +00:00
move things around
This commit is contained in:
parent
693b0fd8fe
commit
c21bdb0690
31 changed files with 210 additions and 242 deletions
|
|
@ -162,7 +162,7 @@
|
|||
android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
|
||||
<activity android:name=".ui.activities.GemPurchaseActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<receiver android:process=":remote" android:name=".NotificationPublisher" />
|
||||
<receiver android:process=":remote" android:name=".receivers.NotificationPublisher" />
|
||||
|
||||
<receiver
|
||||
android:process=":remote"
|
||||
|
|
|
|||
|
|
@ -1,17 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:bind="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<data>
|
||||
<import type="com.habitrpg.android.habitica.models.user.Preferences" />
|
||||
<import type="android.view.View" />
|
||||
|
||||
<variable
|
||||
name="preferences"
|
||||
type="Preferences" />
|
||||
</data>
|
||||
|
||||
<android.support.v4.widget.NestedScrollView
|
||||
<android.support.v4.widget.NestedScrollView xmlns:bind="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scrollbarSize="3dp"
|
||||
|
|
@ -153,4 +142,3 @@
|
|||
</android.support.v7.widget.CardView>
|
||||
</LinearLayout>
|
||||
</android.support.v4.widget.NestedScrollView>
|
||||
</layout>
|
||||
|
|
@ -1,68 +1,51 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data>
|
||||
|
||||
<import type="com.habitrpg.android.habitica.models.tasks.Task" />
|
||||
<import type="android.view.View"/>
|
||||
|
||||
<variable
|
||||
name="task"
|
||||
type="Task" />
|
||||
</data>
|
||||
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:background="@color/white">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:background="@color/white">
|
||||
<LinearLayout
|
||||
android:layout_height="match_parent">
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<RelativeLayout
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<LinearLayout
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_centerVertical="true"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingBottom="20dp"
|
||||
android:paddingTop="20dp">
|
||||
<TextView
|
||||
android:id="@+id/titleTextView"
|
||||
style="@style/CardTitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_centerVertical="true"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingBottom="20dp"
|
||||
android:paddingTop="20dp">
|
||||
<TextView
|
||||
android:id="@+id/checkedTextView"
|
||||
style="@style/CardTitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@{task.text}" />
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/notesTextView"
|
||||
style="@style/CardText"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@{task.notes}"
|
||||
android:visibility="@{task.notes != null ? View.VISIBLE : View.GONE}"/>
|
||||
</LinearLayout>
|
||||
<View
|
||||
android:id="@+id/rightBorderView"
|
||||
android:layout_width="5dp"
|
||||
android:layout_height="match_parent"
|
||||
app:backgroundColor="@{task.getLightTaskColor}"
|
||||
android:gravity="center"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentEnd="true" />
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
<View
|
||||
android:id="@+id/bottomBorderView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0.5dp"
|
||||
android:background="@color/cell_separator"/>
|
||||
<TextView
|
||||
android:id="@+id/notesTextView"
|
||||
style="@style/CardText"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"/>
|
||||
</LinearLayout>
|
||||
<View
|
||||
android:id="@+id/rightBorderView"
|
||||
android:layout_width="5dp"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentEnd="true" />
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
</layout>
|
||||
<View
|
||||
android:id="@+id/bottomBorderView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0.5dp"
|
||||
android:background="@color/cell_separator"/>
|
||||
</LinearLayout>
|
||||
|
|
@ -21,10 +21,11 @@ import com.amplitude.api.Amplitude;
|
|||
import com.amplitude.api.Identify;
|
||||
import com.facebook.FacebookSdk;
|
||||
import com.facebook.drawee.backends.pipeline.Fresco;
|
||||
import com.habitrpg.android.habitica.api.HostConfig;
|
||||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
import com.habitrpg.android.habitica.data.ApiClient;
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler;
|
||||
import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.proxy.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.ui.activities.IntroActivity;
|
||||
import com.habitrpg.android.habitica.ui.activities.LoginActivity;
|
||||
import com.squareup.leakcanary.LeakCanary;
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import com.habitrpg.android.habitica.helpers.PurchaseTypes;
|
|||
import com.habitrpg.android.habitica.models.PurchaseValidationRequest;
|
||||
import com.habitrpg.android.habitica.models.SubscriptionValidationRequest;
|
||||
import com.habitrpg.android.habitica.models.Transaction;
|
||||
import com.habitrpg.android.habitica.models.responses.ErrorResponse;
|
||||
import com.playseeds.android.sdk.Seeds;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,12 @@
|
|||
package com.habitrpg.android.habitica;
|
||||
package com.habitrpg.android.habitica.api;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import com.habitrpg.android.habitica.BuildConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
/**
|
||||
* The configuration of the host<br />
|
||||
* Currently, the Port isn't used at all.
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package com.habitrpg.android.habitica.components;
|
||||
|
||||
import com.habitrpg.android.habitica.HabiticaBaseApplication;
|
||||
import com.habitrpg.android.habitica.NotificationPublisher;
|
||||
import com.habitrpg.android.habitica.receivers.NotificationPublisher;
|
||||
import com.habitrpg.android.habitica.data.ApiClient;
|
||||
import com.habitrpg.android.habitica.helpers.RemindersManager;
|
||||
import com.habitrpg.android.habitica.helpers.SoundManager;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package com.habitrpg.android.habitica.data;
|
|||
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
import com.habitrpg.android.habitica.ErrorResponse;
|
||||
import com.habitrpg.android.habitica.models.responses.ErrorResponse;
|
||||
import com.habitrpg.android.habitica.models.AchievementResult;
|
||||
import com.habitrpg.android.habitica.models.ContentResult;
|
||||
import com.habitrpg.android.habitica.models.LeaveChallengeBody;
|
||||
|
|
|
|||
|
|
@ -4,16 +4,14 @@ import android.content.Context;
|
|||
import android.support.v7.app.AlertDialog;
|
||||
|
||||
import com.amplitude.api.Amplitude;
|
||||
import com.google.gson.ExclusionStrategy;
|
||||
import com.google.gson.FieldAttributes;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.habitrpg.android.habitica.BuildConfig;
|
||||
import com.habitrpg.android.habitica.ErrorResponse;
|
||||
import com.habitrpg.android.habitica.models.responses.ErrorResponse;
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.habitrpg.android.habitica.HabiticaBaseApplication;
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.habitrpg.android.habitica.api.HostConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.data.ApiClient;
|
||||
import com.habitrpg.android.habitica.database.CheckListItemExcludeStrategy;
|
||||
|
|
@ -21,7 +19,7 @@ import com.habitrpg.android.habitica.helpers.PopupNotificationsManager;
|
|||
import com.habitrpg.android.habitica.models.inventory.Equipment;
|
||||
import com.habitrpg.android.habitica.models.inventory.QuestCollect;
|
||||
import com.habitrpg.android.habitica.models.user.User;
|
||||
import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.proxy.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.api.ApiService;
|
||||
import com.habitrpg.android.habitica.api.Server;
|
||||
import com.habitrpg.android.habitica.models.AchievementResult;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import android.widget.TimePicker;
|
|||
import com.habitrpg.android.habitica.HabiticaBaseApplication;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.models.tasks.RemindersItem;
|
||||
import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.proxy.CrashlyticsProxy;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
|
|
|
|||
|
|
@ -2,9 +2,7 @@ package com.habitrpg.android.habitica.helpers;
|
|||
|
||||
import android.content.Context;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Environment;
|
||||
import android.support.v7.preference.PreferenceManager;
|
||||
import android.util.Log;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
|
@ -12,7 +10,6 @@ import org.json.JSONObject;
|
|||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
|
@ -20,8 +17,6 @@ import java.io.OutputStream;
|
|||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
|
||||
import bolts.Bolts;
|
||||
|
||||
/**
|
||||
* Created by keith holliday on 4/7/2017.
|
||||
*/
|
||||
|
|
@ -58,7 +53,7 @@ public class RemoteConfigManager {
|
|||
}
|
||||
}
|
||||
|
||||
class DownloadFileFromURL extends AsyncTask<String, String, String> {
|
||||
private class DownloadFileFromURL extends AsyncTask<String, String, String> {
|
||||
private String filename = "config.json";
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -9,13 +9,13 @@ import android.os.Build;
|
|||
import android.support.v7.preference.PreferenceManager;
|
||||
|
||||
import com.habitrpg.android.habitica.HabiticaBaseApplication;
|
||||
import com.habitrpg.android.habitica.NotificationPublisher;
|
||||
import com.habitrpg.android.habitica.receivers.NotificationPublisher;
|
||||
import com.habitrpg.android.habitica.data.TaskRepository;
|
||||
import com.habitrpg.android.habitica.events.ReminderDeleteEvent;
|
||||
import com.habitrpg.android.habitica.models.tasks.RemindersItem;
|
||||
import com.habitrpg.android.habitica.models.tasks.Task;
|
||||
import com.habitrpg.android.habitica.modules.AppModule;
|
||||
import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.proxy.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.receivers.TaskReceiver;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
|
|
|||
|
|
@ -1,23 +1,23 @@
|
|||
package com.habitrpg.android.habitica;
|
||||
|
||||
import com.habitrpg.android.habitica.models.responses.HabiticaError;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ErrorResponse {
|
||||
public String message;
|
||||
public List<HabiticaError> errors;
|
||||
|
||||
public String getDisplayMessage() {
|
||||
if (errors != null && errors.size() > 0) {
|
||||
HabiticaError error = errors.get(0);
|
||||
if (error.message != null && error.message.length() > 0) {
|
||||
return error.message;
|
||||
}
|
||||
}
|
||||
if (message != null && message.length() > 0) {
|
||||
return message;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
package com.habitrpg.android.habitica.models.responses;
|
||||
|
||||
import com.habitrpg.android.habitica.models.responses.HabiticaError;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ErrorResponse {
|
||||
public String message;
|
||||
public List<HabiticaError> errors;
|
||||
|
||||
public String getDisplayMessage() {
|
||||
if (errors != null && errors.size() > 0) {
|
||||
HabiticaError error = errors.get(0);
|
||||
if (error.message != null && error.message.length() > 0) {
|
||||
return error.message;
|
||||
}
|
||||
}
|
||||
if (message != null && message.length() > 0) {
|
||||
return message;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
|
@ -3,12 +3,12 @@ package com.habitrpg.android.habitica.modules;
|
|||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.habitrpg.android.habitica.api.HostConfig;
|
||||
import com.habitrpg.android.habitica.api.MaintenanceApiService;
|
||||
import com.habitrpg.android.habitica.data.ApiClient;
|
||||
import com.habitrpg.android.habitica.data.implementation.ApiClientImpl;
|
||||
import com.habitrpg.android.habitica.helpers.PopupNotificationsManager;
|
||||
import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.proxy.CrashlyticsProxy;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
package com.habitrpg.android.habitica.modules;
|
||||
|
||||
|
||||
import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.proxy.impl.EmptyCrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.proxy.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.proxy.implementation.EmptyCrashlyticsProxy;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
package com.habitrpg.android.habitica.proxy.ifce;
|
||||
package com.habitrpg.android.habitica.proxy;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
package com.habitrpg.android.habitica.proxy.impl;
|
||||
package com.habitrpg.android.habitica.proxy.implementation;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.proxy.CrashlyticsProxy;
|
||||
|
||||
public class EmptyCrashlyticsProxy implements CrashlyticsProxy {
|
||||
@Override
|
||||
|
|
@ -1,103 +1,105 @@
|
|||
package com.habitrpg.android.habitica;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
|
||||
import com.habitrpg.android.habitica.data.TaskRepository;
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler;
|
||||
import com.habitrpg.android.habitica.helpers.TaskAlarmManager;
|
||||
import com.habitrpg.android.habitica.models.tasks.Task;
|
||||
import com.habitrpg.android.habitica.modules.AppModule;
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
||||
|
||||
//https://gist.github.com/BrandonSmith/6679223
|
||||
public class NotificationPublisher extends BroadcastReceiver {
|
||||
|
||||
@Inject
|
||||
TaskRepository taskRepository;
|
||||
@Inject
|
||||
@Named(AppModule.NAMED_USER_ID)
|
||||
String userId;
|
||||
|
||||
public static String NOTIFICATION_ID = "notification-id";
|
||||
public static String CHECK_DAILIES = "check-dailies";
|
||||
private Context context;
|
||||
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
this.context = context;
|
||||
if (taskRepository == null) {
|
||||
HabiticaApplication.getComponent().inject(this);
|
||||
}
|
||||
|
||||
boolean check_dailies = intent.getBooleanExtra(CHECK_DAILIES, false);
|
||||
Notification notification = getNotification();
|
||||
if (check_dailies) {
|
||||
taskRepository.getTasks(Task.TYPE_DAILY, userId).subscribe(dailies -> {
|
||||
boolean showNotifications = false;
|
||||
for (Task task : dailies) {
|
||||
if (task.checkIfDue(0)) {
|
||||
showNotifications = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
TaskAlarmManager.scheduleDailyReminder(context);
|
||||
if (showNotifications) {
|
||||
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
|
||||
int id = intent.getIntExtra(NOTIFICATION_ID, 0);
|
||||
notificationManager.notify(id, notification);
|
||||
}
|
||||
}, RxErrorHandler.handleEmptyError());
|
||||
|
||||
} else {
|
||||
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
|
||||
int id = intent.getIntExtra(NOTIFICATION_ID, 0);
|
||||
notificationManager.notify(id, notification);
|
||||
}
|
||||
}
|
||||
|
||||
@TargetApi(21)
|
||||
private Notification getNotification() {
|
||||
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
|
||||
|
||||
Notification notification;
|
||||
Notification.Builder builder = new Notification.Builder(context);
|
||||
builder.setContentTitle(context.getString(R.string.app_name));
|
||||
builder.setContentText(context.getString(R.string.reminder_title));
|
||||
builder.setSmallIcon(R.drawable.ic_gryphon_white);
|
||||
Intent notificationIntent = new Intent(context, MainActivity.class);
|
||||
|
||||
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
|
||||
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
||||
|
||||
PendingIntent intent = PendingIntent.getActivity(context, 0,
|
||||
notificationIntent, 0);
|
||||
builder.setContentIntent(intent);
|
||||
|
||||
if (currentapiVersion >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
builder.setColor(ContextCompat.getColor(context, R.color.brand_300));
|
||||
}
|
||||
|
||||
if (currentapiVersion >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||
notification = builder.build();
|
||||
} else {
|
||||
notification = builder.getNotification();
|
||||
}
|
||||
notification.defaults |= Notification.DEFAULT_LIGHTS;
|
||||
|
||||
notification.flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS;
|
||||
return notification;
|
||||
}
|
||||
}
|
||||
package com.habitrpg.android.habitica.receivers;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.data.TaskRepository;
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler;
|
||||
import com.habitrpg.android.habitica.helpers.TaskAlarmManager;
|
||||
import com.habitrpg.android.habitica.models.tasks.Task;
|
||||
import com.habitrpg.android.habitica.modules.AppModule;
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
||||
|
||||
//https://gist.github.com/BrandonSmith/6679223
|
||||
public class NotificationPublisher extends BroadcastReceiver {
|
||||
|
||||
@Inject
|
||||
TaskRepository taskRepository;
|
||||
@Inject
|
||||
@Named(AppModule.NAMED_USER_ID)
|
||||
String userId;
|
||||
|
||||
public static String NOTIFICATION_ID = "notification-id";
|
||||
public static String CHECK_DAILIES = "check-dailies";
|
||||
private Context context;
|
||||
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
this.context = context;
|
||||
if (taskRepository == null) {
|
||||
HabiticaApplication.getComponent().inject(this);
|
||||
}
|
||||
|
||||
boolean check_dailies = intent.getBooleanExtra(CHECK_DAILIES, false);
|
||||
Notification notification = getNotification();
|
||||
if (check_dailies) {
|
||||
taskRepository.getTasks(Task.TYPE_DAILY, userId).subscribe(dailies -> {
|
||||
boolean showNotifications = false;
|
||||
for (Task task : dailies) {
|
||||
if (task.checkIfDue(0)) {
|
||||
showNotifications = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
TaskAlarmManager.scheduleDailyReminder(context);
|
||||
if (showNotifications) {
|
||||
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
|
||||
int id = intent.getIntExtra(NOTIFICATION_ID, 0);
|
||||
notificationManager.notify(id, notification);
|
||||
}
|
||||
}, RxErrorHandler.handleEmptyError());
|
||||
|
||||
} else {
|
||||
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
|
||||
int id = intent.getIntExtra(NOTIFICATION_ID, 0);
|
||||
notificationManager.notify(id, notification);
|
||||
}
|
||||
}
|
||||
|
||||
@TargetApi(21)
|
||||
private Notification getNotification() {
|
||||
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
|
||||
|
||||
Notification notification;
|
||||
Notification.Builder builder = new Notification.Builder(context);
|
||||
builder.setContentTitle(context.getString(R.string.app_name));
|
||||
builder.setContentText(context.getString(R.string.reminder_title));
|
||||
builder.setSmallIcon(R.drawable.ic_gryphon_white);
|
||||
Intent notificationIntent = new Intent(context, MainActivity.class);
|
||||
|
||||
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
|
||||
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
||||
|
||||
PendingIntent intent = PendingIntent.getActivity(context, 0,
|
||||
notificationIntent, 0);
|
||||
builder.setContentIntent(intent);
|
||||
|
||||
if (currentapiVersion >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
builder.setColor(ContextCompat.getColor(context, R.color.brand_300));
|
||||
}
|
||||
|
||||
if (currentapiVersion >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||
notification = builder.build();
|
||||
} else {
|
||||
notification = builder.getNotification();
|
||||
}
|
||||
notification.defaults |= Notification.DEFAULT_LIGHTS;
|
||||
|
||||
notification.flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS;
|
||||
return notification;
|
||||
}
|
||||
}
|
||||
|
|
@ -15,7 +15,7 @@ import com.habitrpg.android.habitica.HabiticaApplication;
|
|||
import com.habitrpg.android.habitica.R;
|
||||
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.proxy.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.ui.fragments.GemsPurchaseFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.SubscriptionFragment;
|
||||
import com.playseeds.android.sdk.Seeds;
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ import com.google.android.gms.common.AccountPicker;
|
|||
import com.google.android.gms.common.GooglePlayServicesUtil;
|
||||
import com.google.android.gms.common.Scopes;
|
||||
import com.habitrpg.android.habitica.BuildConfig;
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.habitrpg.android.habitica.api.HostConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
import com.habitrpg.android.habitica.data.ApiClient;
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ import android.widget.FrameLayout;
|
|||
|
||||
import com.facebook.drawee.view.SimpleDraweeView;
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.habitrpg.android.habitica.api.HostConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.api.MaintenanceApiService;
|
||||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
|
|
@ -85,7 +85,7 @@ import com.habitrpg.android.habitica.models.tasks.Task;
|
|||
import com.habitrpg.android.habitica.models.user.Preferences;
|
||||
import com.habitrpg.android.habitica.models.user.SpecialItems;
|
||||
import com.habitrpg.android.habitica.models.user.User;
|
||||
import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.proxy.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.ui.AvatarView;
|
||||
import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel;
|
||||
import com.habitrpg.android.habitica.ui.TutorialView;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import android.support.v7.preference.PreferenceScreen;
|
|||
import android.support.v7.widget.Toolbar;
|
||||
|
||||
import com.habitrpg.android.habitica.BuildConfig;
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.habitrpg.android.habitica.api.HostConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
import com.habitrpg.android.habitica.ui.fragments.preferences.AccountDetailsFragment;
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import android.view.View;
|
|||
import android.view.Window;
|
||||
import android.widget.Button;
|
||||
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.habitrpg.android.habitica.api.HostConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
import com.habitrpg.android.habitica.data.ApiClient;
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import com.habitrpg.android.habitica.components.AppComponent;
|
|||
import com.habitrpg.android.habitica.data.TaskRepository;
|
||||
import com.habitrpg.android.habitica.helpers.TaskFilterHelper;
|
||||
import com.habitrpg.android.habitica.models.tasks.Task;
|
||||
import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.proxy.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.ui.viewHolders.tasks.BaseTaskViewHolder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import android.view.ViewGroup;
|
|||
import com.habitrpg.android.habitica.R;
|
||||
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.proxy.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.ui.GemPurchaseOptionsView;
|
||||
import com.habitrpg.android.habitica.ui.activities.GemPurchaseActivity;
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ import com.habitrpg.android.habitica.events.UserSubscribedEvent;
|
|||
import com.habitrpg.android.habitica.helpers.PurchaseTypes;
|
||||
import com.habitrpg.android.habitica.models.user.User;
|
||||
import com.habitrpg.android.habitica.models.user.SubscriptionPlan;
|
||||
import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.proxy.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.ui.activities.GemPurchaseActivity;
|
||||
import com.habitrpg.android.habitica.ui.views.subscriptions.SubscriptionDetailsView;
|
||||
import com.habitrpg.android.habitica.ui.views.subscriptions.SubscriptionOptionView;
|
||||
|
|
|
|||
|
|
@ -27,8 +27,6 @@ public class AvatarOverviewFragment extends BaseMainFragment implements AdapterV
|
|||
@Inject
|
||||
UserRepository userRepository;
|
||||
|
||||
FragmentAvatarOverviewBinding viewBinding;
|
||||
|
||||
@BindView(R.id.avatar_size_spinner)
|
||||
Spinner avatarSizeSpinner;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import android.content.Context;
|
|||
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.habitrpg.android.habitica.HabiticaBaseApplication;
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.habitrpg.android.habitica.api.HostConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.data.ApiClient;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,10 +3,9 @@ package com.habitrpg.android.habitica.api;
|
|||
|
||||
import com.habitrpg.android.habitica.data.implementation.ApiClientImpl;
|
||||
import com.habitrpg.android.habitica.helpers.PopupNotificationsManager;
|
||||
import com.habitrpg.android.habitica.proxy.impl.EmptyCrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.proxy.implementation.EmptyCrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.data.ApiClient;
|
||||
import com.habitrpg.android.habitica.BuildConfig;
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.habitrpg.android.habitica.models.user.User;
|
||||
import com.habitrpg.android.habitica.models.auth.UserAuthResponse;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ package com.habitrpg.android.habitica.helpers;
|
|||
import com.habitrpg.android.habitica.data.implementation.ApiClientImpl;
|
||||
import com.habitrpg.android.habitica.BuildConfig;
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.habitrpg.android.habitica.proxy.impl.EmptyCrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.api.HostConfig;
|
||||
import com.habitrpg.android.habitica.proxy.implementation.EmptyCrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.data.ApiClient;
|
||||
import com.habitrpg.android.habitica.models.Notification;
|
||||
import com.habitrpg.android.habitica.models.notifications.NotificationData;
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ buildscript {
|
|||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:2.3.1'
|
||||
classpath 'com.android.tools.build:gradle:2.3.2'
|
||||
classpath 'com.android.databinding:dataBinder:1.0-rc4'
|
||||
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
|
||||
classpath 'com.google.gms:google-services:3.0.0'
|
||||
|
|
|
|||
Loading…
Reference in a new issue