diff --git a/Habitica/res/layout/activity_main.xml b/Habitica/res/layout/activity_main.xml
index 59f6425cd..20464c5d6 100644
--- a/Habitica/res/layout/activity_main.xml
+++ b/Habitica/res/layout/activity_main.xml
@@ -103,6 +103,17 @@
app:tabGravity="fill"
app:tabIndicatorColor="?colorContentBackground"
app:tabMode="fixed" />
+
- Connection Error
You are not connected to the internet.
- There seems to be a problem with the server. Try again later.
+ Server connection lost
Authentication Error
Your Username and/or Password was incorrect.
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.kt
index eae1bb3db..dcbc7e4b5 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.kt
@@ -260,19 +260,16 @@ class ApiClientImpl//private OnHabitsAPIResult mResultListener;
}
private fun showConnectionProblemDialog(resourceMessageString: Int) {
- showConnectionProblemDialog(R.string.network_error_title, resourceMessageString)
+ showConnectionProblemDialog(null, context.getString(resourceMessageString))
}
private fun showConnectionProblemDialog(resourceTitleString: Int, resourceMessageString: Int) {
showConnectionProblemDialog(context.getString(resourceTitleString), context.getString(resourceMessageString))
}
- private fun showConnectionProblemDialog(resourceTitleString: String, resourceMessageString: String) {
+ private fun showConnectionProblemDialog(resourceTitleString: String?, resourceMessageString: String) {
val event = ShowConnectionProblemEvent(resourceTitleString, resourceMessageString)
EventBus.getDefault().post(event)
- if (BuildConfig.DEBUG) {
- Log.d(TAG, "showConnectionProblemDialog: $resourceTitleString $resourceMessageString")
- }
}
/*
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/events/ShowConnectionProblemEvent.java b/Habitica/src/main/java/com/habitrpg/android/habitica/events/ShowConnectionProblemEvent.java
deleted file mode 100644
index 011f38018..000000000
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/events/ShowConnectionProblemEvent.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.habitrpg.android.habitica.events;
-
-/**
- * Created by phillip on 25.07.17.
- */
-
-public class ShowConnectionProblemEvent {
- public String title;
- public String message;
-
- public ShowConnectionProblemEvent(String title, String message) {
- this.title = title;
- this.message = message;
-
- }
-}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/events/ShowConnectionProblemEvent.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/events/ShowConnectionProblemEvent.kt
new file mode 100644
index 000000000..db7c8af83
--- /dev/null
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/events/ShowConnectionProblemEvent.kt
@@ -0,0 +1,7 @@
+package com.habitrpg.android.habitica.events
+
+/**
+ * Created by phillip on 25.07.17.
+ */
+
+class ShowConnectionProblemEvent(var title: String?, var message: String)
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/BaseActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/BaseActivity.kt
index b98a06694..bea3c2952 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/BaseActivity.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/BaseActivity.kt
@@ -100,7 +100,7 @@ abstract class BaseActivity : AppCompatActivity() {
}
@Subscribe
- fun onEvent(event: ShowConnectionProblemEvent) {
+ open fun onEvent(event: ShowConnectionProblemEvent) {
val alert = HabiticaAlertDialog(this)
alert.setTitle(event.title)
alert.setMessage(event.message)
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 3ef8b4a49..0c8eaa977 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
@@ -12,6 +12,7 @@ import android.graphics.Canvas
import android.graphics.drawable.BitmapDrawable
import android.os.Build
import android.os.Bundle
+import android.os.Handler
import android.preference.PreferenceManager
import android.util.Log
import android.util.TypedValue
@@ -137,6 +138,7 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
internal val detailTabs: TabLayout? by bindOptionalView(R.id.detail_tabs)
val avatarWithBars: View by bindView(R.id.avatar_with_bars)
private val overlayLayout: ViewGroup by bindView(R.id.overlayFrameLayout)
+ private val connectionIssueTextView: TextView by bindView(R.id.connection_issue_textview)
var user: User? = null
@@ -148,6 +150,7 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
private var drawerToggle: ActionBarDrawerToggle? = null
private var keyboardUtil: KeyboardUtil? = null
private var resumeFromActivity = false
+ private var connectionIssueHandler: Handler? = null
private val statusBarHeight: Int
get() {
@@ -834,6 +837,20 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
}, RxErrorHandler.handleEmptyError())
}
+ override fun onEvent(event: ShowConnectionProblemEvent) {
+ if (event.title != null) {
+ super.onEvent(event)
+ } else {
+ connectionIssueHandler?.removeCallbacksAndMessages(null)
+ connectionIssueTextView.visibility = View.VISIBLE
+ connectionIssueTextView.text = event.message
+ connectionIssueHandler = Handler()
+ connectionIssueHandler?.postDelayed({
+ connectionIssueTextView.visibility = View.GONE
+ }, 5000)
+ }
+ }
+
companion object {
const val SELECT_CLASS_RESULT = 11
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/BaseWidgetProvider.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/BaseWidgetProvider.kt
index 1bc32e813..bbc3ebcfc 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/BaseWidgetProvider.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/BaseWidgetProvider.kt
@@ -1,14 +1,11 @@
package com.habitrpg.android.habitica.widget
-import android.annotation.TargetApi
import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetProvider
import android.content.Context
-import android.os.Build
import android.os.Bundle
import android.widget.RemoteViews
import android.widget.Toast
-import com.habitrpg.android.habitica.HabiticaBaseApplication
import com.habitrpg.android.habitica.data.UserRepository
import com.habitrpg.android.habitica.helpers.AmplitudeManager
import com.habitrpg.android.habitica.interactors.NotifyUserUseCase
@@ -20,7 +17,7 @@ import javax.inject.Inject
abstract class BaseWidgetProvider : AppWidgetProvider() {
@Inject
- var userRepository: UserRepository? = null
+ lateinit var userRepository: UserRepository
protected var context: Context? = null
@@ -60,16 +57,12 @@ abstract class BaseWidgetProvider : AppWidgetProvider() {
// First find out rows and columns based on width provided.
val rows = getCellsForSize(minHeight)
val columns = getCellsForSize(minWidth)
- val remoteViews = RemoteViews(context.packageName,
- layoutResourceId())
+ val remoteViews = RemoteViews(context?.packageName, layoutResourceId())
return configureRemoteViews(remoteViews, widgetId, columns, rows)
}
protected fun showToastForTaskDirection(context: Context, data: TaskScoringResult?, userID: String) {
- if (userRepository == null) {
- HabiticaBaseApplication.component?.inject(this)
- }
if (data != null) {
val pair = NotifyUserUseCase.getNotificationAndAddStatsToUserAsText(context, data.experienceDelta!!, data.healthDelta!!, data.goldDelta!!, data.manaDelta!!)
val toast = Toast.makeText(context, pair.first, Toast.LENGTH_LONG)