diff --git a/Habitica/build.gradle b/Habitica/build.gradle index d1287ec83..df75689a4 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -146,7 +146,7 @@ android { buildConfigField "String", "TESTING_LEVEL", "\"production\"" resConfigs "en", "bg", "de", "en-rGB", "es", "fr", "hr-rHR", "in", "it", "iw", "ja", "ko", "lt", "nl", "pl", "pt-rBR", "pt-rPT", "ru", "tr", "zh", "zh-rTW" - versionCode 3006 + versionCode 3011 versionName "3.3" } diff --git a/Habitica/res/navigation/navigation.xml b/Habitica/res/navigation/navigation.xml index 6920962ad..c79b4ecf0 100644 --- a/Habitica/res/navigation/navigation.xml +++ b/Habitica/res/navigation/navigation.xml @@ -71,7 +71,7 @@ android:id="@+id/skillsFragment" android:name="com.habitrpg.android.habitica.ui.fragments.skills.SkillsFragment" android:label="@string/sidebar_skills"> - + + @@ -145,6 +146,7 @@ android:id="@+id/subscriptionPurchaseActivity" android:name="com.habitrpg.android.habitica.ui.activities.GemPurchaseActivity" android:label="@string/gem_purchase_toolbartitle" > + + + android:label="@string/sidebar_news"> + + + android:label="@string/sidebar_about"> + + + android:label="@string/sidebar_inbox"> + @@ -279,6 +287,7 @@ android:name="com.habitrpg.android.habitica.ui.activities.PrefsActivity" android:label="@string/app_settings" tools:layout="@layout/activity_prefs"> + + + + android:label="@string/market"> + + + android:label="@string/questShop"> + + + android:label="@string/seasonalShop"> + + + android:label="@string/timeTravelers"> + + + android:label=""> + + handleChatMessage(intent.getStringExtra("type"), intent.getStringExtra("groupID")) PushNotificationManager.G1G1_PROMO_KEY -> openGiftOneGetOneInfoScreen() else -> { - if (intent.hasExtra("openURL")) { - MainNavigationController.navigate(intent.getStringExtra("openURL")) + intent.getStringExtra("openURL")?.let { + MainNavigationController.navigate(it) } } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ChangeUsernameLocalNotification.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ChangeUsernameLocalNotification.kt index d062c54a2..3862692b3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ChangeUsernameLocalNotification.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ChangeUsernameLocalNotification.kt @@ -2,4 +2,4 @@ package com.habitrpg.android.habitica.helpers.notifications import android.content.Context -class ChangeUsernameLocalNotification(context: Context, identifier: String) : HabiticaLocalNotification(context, identifier) \ No newline at end of file +class ChangeUsernameLocalNotification(context: Context, identifier: String?) : HabiticaLocalNotification(context, identifier) \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ChatMentionNotification.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ChatMentionNotification.kt index 32d1030db..57dd8d7c6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ChatMentionNotification.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ChatMentionNotification.kt @@ -4,7 +4,7 @@ import android.content.Context import android.content.Intent import androidx.core.app.NotificationCompat -class ChatMentionNotification(context: Context, identifier: String) : HabiticaLocalNotification(context, identifier) { +class ChatMentionNotification(context: Context, identifier: String?) : HabiticaLocalNotification(context, identifier) { override fun configureNotificationBuilder(data: MutableMap): NotificationCompat.Builder { val style = NotificationCompat.BigTextStyle() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GenericLocalNotification.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GenericLocalNotification.kt index 136a553af..291393c49 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GenericLocalNotification.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GenericLocalNotification.kt @@ -2,4 +2,4 @@ package com.habitrpg.android.habitica.helpers.notifications import android.content.Context -class GenericLocalNotification(context: Context, identifier: String) : HabiticaLocalNotification(context, identifier) \ No newline at end of file +class GenericLocalNotification(context: Context, identifier: String?) : HabiticaLocalNotification(context, identifier) \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GiftOneGetOneLocalNotification.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GiftOneGetOneLocalNotification.kt index cca112f84..147a68019 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GiftOneGetOneLocalNotification.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GiftOneGetOneLocalNotification.kt @@ -2,4 +2,4 @@ package com.habitrpg.android.habitica.helpers.notifications import android.content.Context -class GiftOneGetOneLocalNotification(context: Context, identifier: String) : HabiticaLocalNotification(context, identifier) \ No newline at end of file +class GiftOneGetOneLocalNotification(context: Context, identifier: String?) : HabiticaLocalNotification(context, identifier) \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GroupActivityNotification.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GroupActivityNotification.kt index 2ded314fa..dfeb5e7dc 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GroupActivityNotification.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GroupActivityNotification.kt @@ -15,7 +15,7 @@ import com.habitrpg.android.habitica.ui.helpers.EmojiParser import java.text.SimpleDateFormat import java.util.* -class GroupActivityNotification(context: Context, identifier: String) : HabiticaLocalNotification(context, identifier) { +class GroupActivityNotification(context: Context, identifier: String?) : HabiticaLocalNotification(context, identifier) { override fun getNotificationID(data: MutableMap): Int { return data["groupID"].hashCode() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GuildInviteLocalNotification.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GuildInviteLocalNotification.kt index f87b48d26..274ba2dff 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GuildInviteLocalNotification.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GuildInviteLocalNotification.kt @@ -10,7 +10,7 @@ import com.habitrpg.android.habitica.receivers.LocalNotificationActionReceiver /** * Created by keithholliday on 7/1/16. */ -class GuildInviteLocalNotification(context: Context, identifier: String) : HabiticaLocalNotification(context, identifier) { +class GuildInviteLocalNotification(context: Context, identifier: String?) : HabiticaLocalNotification(context, identifier) { override fun configureMainIntent(intent: Intent) { super.configureMainIntent(intent) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaLocalNotification.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaLocalNotification.kt index bc39291dd..272ac3b74 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaLocalNotification.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaLocalNotification.kt @@ -14,7 +14,7 @@ import java.util.* /** * Created by keithholliday on 6/28/16. */ -abstract class HabiticaLocalNotification(protected var context: Context, protected var identifier: String) { +abstract class HabiticaLocalNotification(protected var context: Context, protected var identifier: String?) { protected var data: Map? = null protected var title: String? = null @@ -56,8 +56,6 @@ abstract class HabiticaLocalNotification(protected var context: Context, protect protected open fun setNotificationActions(data: Map) { val intent = Intent(context, MainActivity::class.java) - intent.putExtra("notificationIdentifier", identifier) - intent.putExtra("notificationTimeStamp", Date().time) configureMainIntent(intent) val pendingIntent = PendingIntent.getActivity( context, @@ -69,6 +67,11 @@ abstract class HabiticaLocalNotification(protected var context: Context, protect } protected open fun configureMainIntent(intent: Intent) { + intent.putExtra("notificationIdentifier", identifier) + intent.putExtra("notificationTimeStamp", Date().time) + if (data?.containsKey("openURL") == true) { + intent.putExtra("openURL", data?.get("openURL")) + } } protected open fun getNotificationID(data: MutableMap): Int { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaLocalNotificationFactory.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaLocalNotificationFactory.java deleted file mode 100644 index 10ec4deb5..000000000 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaLocalNotificationFactory.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.habitrpg.android.habitica.helpers.notifications; - -import android.content.Context; - -/** - * Created by keithholliday on 6/28/16. - */ -public class HabiticaLocalNotificationFactory { - - //use getShape method to get object of type shape - public HabiticaLocalNotification build(String notificationType, Context context) { - if (notificationType.equalsIgnoreCase(PushNotificationManager.PARTY_INVITE_PUSH_NOTIFICATION_KEY)) { - return new PartyInviteLocalNotification(context, notificationType); - } else if (notificationType.contains(PushNotificationManager.RECEIVED_PRIVATE_MESSAGE_PUSH_NOTIFICATION_KEY)) { - return new ReceivedPrivateMessageLocalNotification(context, notificationType); - } else if (notificationType.contains(PushNotificationManager.RECEIVED_GEMS_PUSH_NOTIFICATION_KEY)) { - return new ReceivedGemsGiftLocalNotification(context, notificationType); - } else if (notificationType.contains(PushNotificationManager.RECEIVED_SUBSCRIPTION_GIFT_PUSH_NOTIFICATION_KEY)) { - return new ReceivedSubscriptionGiftLocalNotification(context, notificationType); - } else if (notificationType.contains(PushNotificationManager.GUILD_INVITE_PUSH_NOTIFICATION_KEY)) { - return new GuildInviteLocalNotification(context, notificationType); - } else if (notificationType.contains(PushNotificationManager.QUEST_INVITE_PUSH_NOTIFICATION_KEY)) { - return new QuestInviteLocalNotification(context, notificationType); - } else if (notificationType.contains(PushNotificationManager.QUEST_BEGUN_PUSH_NOTIFICATION_KEY)) { - return new QuestBegunLocalNotification(context, notificationType); - } else if (notificationType.contains(PushNotificationManager.WON_CHALLENGE_PUSH_NOTIFICATION_KEY)) { - return new WonChallengeLocalNotification(context, notificationType); - } else if (notificationType.contains(PushNotificationManager.CHANGE_USERNAME_PUSH_NOTIFICATION_KEY)) { - return new ChangeUsernameLocalNotification(context, notificationType); - } else if (notificationType.contains(PushNotificationManager.GIFT_ONE_GET_ONE_PUSH_NOTIFICATION_KEY)) { - return new GiftOneGetOneLocalNotification(context, notificationType); - } else if (notificationType.contains(PushNotificationManager.CHAT_MENTION_NOTIFICATION_KEY)) { - return new ChatMentionNotification(context, notificationType); - } else if (notificationType.contains(PushNotificationManager.GROUP_ACTIVITY_NOTIFICATION_KEY)) { - return new GroupActivityNotification(context, notificationType); - } else { - return new GenericLocalNotification(context, notificationType); - } - } -} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaLocalNotificationFactory.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaLocalNotificationFactory.kt new file mode 100644 index 000000000..ed92d1895 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaLocalNotificationFactory.kt @@ -0,0 +1,53 @@ +package com.habitrpg.android.habitica.helpers.notifications + +import android.content.Context + +/** + * Created by keithholliday on 6/28/16. + */ +class HabiticaLocalNotificationFactory { + //use getShape method to get object of type shape + fun build(notificationType: String?, context: Context?): HabiticaLocalNotification { + return when { + PushNotificationManager.PARTY_INVITE_PUSH_NOTIFICATION_KEY.equals(notificationType, true)-> { + PartyInviteLocalNotification(context!!, notificationType) + } + PushNotificationManager.RECEIVED_PRIVATE_MESSAGE_PUSH_NOTIFICATION_KEY.equals(notificationType, true)-> { + ReceivedPrivateMessageLocalNotification(context!!, notificationType) + } + PushNotificationManager.RECEIVED_GEMS_PUSH_NOTIFICATION_KEY.equals(notificationType, true)-> { + ReceivedGemsGiftLocalNotification(context!!, notificationType) + } + PushNotificationManager.RECEIVED_SUBSCRIPTION_GIFT_PUSH_NOTIFICATION_KEY.equals(notificationType, true)-> { + ReceivedSubscriptionGiftLocalNotification(context!!, notificationType) + } + PushNotificationManager.GUILD_INVITE_PUSH_NOTIFICATION_KEY.equals(notificationType, true)-> { + GuildInviteLocalNotification(context!!, notificationType) + } + PushNotificationManager.QUEST_INVITE_PUSH_NOTIFICATION_KEY.equals(notificationType, true)-> { + QuestInviteLocalNotification(context!!, notificationType) + } + PushNotificationManager.QUEST_BEGUN_PUSH_NOTIFICATION_KEY.equals(notificationType, true)-> { + QuestBegunLocalNotification(context!!, notificationType) + } + PushNotificationManager.WON_CHALLENGE_PUSH_NOTIFICATION_KEY.equals(notificationType, true)-> { + WonChallengeLocalNotification(context!!, notificationType) + } + PushNotificationManager.CHANGE_USERNAME_PUSH_NOTIFICATION_KEY.equals(notificationType, true)-> { + ChangeUsernameLocalNotification(context!!, notificationType) + } + PushNotificationManager.GIFT_ONE_GET_ONE_PUSH_NOTIFICATION_KEY.equals(notificationType, true)-> { + GiftOneGetOneLocalNotification(context!!, notificationType) + } + PushNotificationManager.CHAT_MENTION_NOTIFICATION_KEY.equals(notificationType, true)-> { + ChatMentionNotification(context!!, notificationType) + } + PushNotificationManager.GROUP_ACTIVITY_NOTIFICATION_KEY.equals(notificationType, true)-> { + GroupActivityNotification(context!!, notificationType) + } + else -> { + GenericLocalNotification(context!!, notificationType) + } + } + } +} \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PartyInviteLocalNotification.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PartyInviteLocalNotification.kt index ee5fb9d55..e2eb8263b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PartyInviteLocalNotification.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PartyInviteLocalNotification.kt @@ -10,7 +10,7 @@ import com.habitrpg.android.habitica.receivers.LocalNotificationActionReceiver /** * Created by keithholliday on 6/28/16. */ -class PartyInviteLocalNotification(context: Context, identifier: String) : HabiticaLocalNotification(context, identifier) { +class PartyInviteLocalNotification(context: Context, identifier: String?) : HabiticaLocalNotification(context, identifier) { override fun setNotificationActions(data: Map) { super.setNotificationActions(data) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/QuestBegunLocalNotification.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/QuestBegunLocalNotification.kt index 039426262..964f329fb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/QuestBegunLocalNotification.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/QuestBegunLocalNotification.kt @@ -5,4 +5,4 @@ import android.content.Context /** * Created by keithholliday on 7/1/16. */ -class QuestBegunLocalNotification(context: Context, identifier: String) : HabiticaLocalNotification(context, identifier) +class QuestBegunLocalNotification(context: Context, identifier: String?) : HabiticaLocalNotification(context, identifier) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/QuestInviteLocalNotification.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/QuestInviteLocalNotification.kt index fa01ded68..c3ad147f0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/QuestInviteLocalNotification.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/QuestInviteLocalNotification.kt @@ -9,7 +9,7 @@ import com.habitrpg.android.habitica.receivers.LocalNotificationActionReceiver /** * Created by keithholliday on 7/1/16. */ -class QuestInviteLocalNotification(context: Context, identifier: String) : HabiticaLocalNotification(context, identifier) { +class QuestInviteLocalNotification(context: Context, identifier: String?) : HabiticaLocalNotification(context, identifier) { override fun getNotificationID(data: MutableMap): Int { return 1000 diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ReceivedGemsGiftLocalNotification.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ReceivedGemsGiftLocalNotification.kt index 2842c4a0f..04a881bf1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ReceivedGemsGiftLocalNotification.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ReceivedGemsGiftLocalNotification.kt @@ -5,4 +5,4 @@ import android.content.Context /** * Created by keithholliday on 7/1/16. */ -class ReceivedGemsGiftLocalNotification(context: Context, identifier: String) : HabiticaLocalNotification(context, identifier) +class ReceivedGemsGiftLocalNotification(context: Context, identifier: String?) : HabiticaLocalNotification(context, identifier) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ReceivedPrivateMessageLocalNotification.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ReceivedPrivateMessageLocalNotification.kt index ff71f583e..d304522e9 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ReceivedPrivateMessageLocalNotification.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ReceivedPrivateMessageLocalNotification.kt @@ -13,7 +13,7 @@ import com.habitrpg.android.habitica.receivers.LocalNotificationActionReceiver import com.habitrpg.android.habitica.ui.helpers.EmojiParser -class ReceivedPrivateMessageLocalNotification(context: Context, identifier: String) : HabiticaLocalNotification(context, identifier) { +class ReceivedPrivateMessageLocalNotification(context: Context, identifier: String?) : HabiticaLocalNotification(context, identifier) { override fun configureNotificationBuilder(data: MutableMap): NotificationCompat.Builder { val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as? NotificationManager val existingNotifications = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ReceivedSubscriptionGiftLocalNotification.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ReceivedSubscriptionGiftLocalNotification.kt index 23bc89237..e8be7bb5b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ReceivedSubscriptionGiftLocalNotification.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/ReceivedSubscriptionGiftLocalNotification.kt @@ -5,4 +5,4 @@ import android.content.Context /** * Created by keithholliday on 7/1/16. */ -class ReceivedSubscriptionGiftLocalNotification(context: Context, identifier: String) : HabiticaLocalNotification(context, identifier) +class ReceivedSubscriptionGiftLocalNotification(context: Context, identifier: String?) : HabiticaLocalNotification(context, identifier) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/WonChallengeLocalNotification.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/WonChallengeLocalNotification.kt index 75947ad32..8ff30b1a8 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/WonChallengeLocalNotification.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/WonChallengeLocalNotification.kt @@ -5,4 +5,4 @@ import android.content.Context /** * Created by keithholliday on 7/2/16. */ -class WonChallengeLocalNotification(context: Context, identifier: String) : HabiticaLocalNotification(context, identifier) +class WonChallengeLocalNotification(context: Context, identifier: String?) : HabiticaLocalNotification(context, identifier) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt index c28b22741..49b97f397 100755 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt @@ -374,7 +374,7 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction { putBoolean("preventDailyReminder", false) } - if (intent.hasExtra("notificationIdentifier") && lastNotificationOpen != intent.getLongExtra("notificationTimeStamp", 0)) { + if ((intent.hasExtra("notificationIdentifier") || intent.hasExtra("openURL")) && lastNotificationOpen != intent.getLongExtra("notificationTimeStamp", 0)) { lastNotificationOpen = intent.getLongExtra("notificationTimeStamp", 0) val identifier = intent.getStringExtra("notificationIdentifier") ?: "" val additionalData = HashMap()