From d2044f307c8e1173e472e7e4403bc20c8f8b3a3e Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Fri, 31 May 2019 11:07:36 +0200 Subject: [PATCH] Improve offline notice --- Habitica/res/layout/activity_main.xml | 11 +++++++++++ Habitica/res/values/strings.xml | 3 +-- .../data/implementation/ApiClientImpl.kt | 7 ++----- .../events/ShowConnectionProblemEvent.java | 16 ---------------- .../events/ShowConnectionProblemEvent.kt | 7 +++++++ .../habitica/ui/activities/BaseActivity.kt | 2 +- .../habitica/ui/activities/MainActivity.kt | 17 +++++++++++++++++ .../habitica/widget/BaseWidgetProvider.kt | 11 ++--------- 8 files changed, 41 insertions(+), 33 deletions(-) delete mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/events/ShowConnectionProblemEvent.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/events/ShowConnectionProblemEvent.kt 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)