Skip to content

Commit 2b7318b

Browse files
committed
refactor: Localize notification actions and success/error messages
1 parent cb75b1b commit 2b7318b

File tree

4 files changed

+57
-16
lines changed

4 files changed

+57
-16
lines changed

you-have-mail-android/app/src/main/java/dev/lbeernaert/youhavemail/app/ActionReceivers.kt

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.content.BroadcastReceiver
44
import android.content.Context
55
import android.content.Intent
66
import android.util.Log
7+
import dev.lbeernaert.youhavemail.R
78
import dev.lbeernaert.youhavemail.yhmLogError
89
import dev.lbeernaert.youhavemail.yhmLogInfo
910

@@ -14,7 +15,11 @@ private const val TAG = "Receivers"
1415
/**
1516
* Base class receiver for actions which can be taken on a notification.
1617
*/
17-
open class ActionReceiver(private val name: String, private val description: String) :
18+
open class ActionReceiver(
19+
private val name: String,
20+
private val descriptionSuccess: Int,
21+
private val descriptionFail: Int
22+
) :
1823
BroadcastReceiver() {
1924

2025
override fun onReceive(context: Context, intent: Intent) {
@@ -33,7 +38,7 @@ open class ActionReceiver(private val name: String, private val description: Str
3338
yhmLogInfo("Received $name broadcast for $email")
3439

3540
try {
36-
ActionWorker.queue(context, email, action, description)
41+
ActionWorker.queue(context, email, action, descriptionSuccess, descriptionFail)
3742
} catch (e: Exception) {
3843
yhmLogError("Failed to queue action for $email: $e")
3944
createAndDisplayServiceErrorNotification(
@@ -62,7 +67,11 @@ open class ActionReceiver(private val name: String, private val description: Str
6267
/**
6368
* Broadcast when the user clicks the `Mark Read` notification action.
6469
*/
65-
class MarkReadReceiver : ActionReceiver(name = "MarkRead", "Mark message read") {
70+
class MarkReadReceiver : ActionReceiver(
71+
name = "MarkRead",
72+
R.string.msg_mark_read_success,
73+
R.string.msg_mark_read_fail
74+
) {
6675
companion object {
6776
fun newIntent(
6877
context: Context,
@@ -83,7 +92,11 @@ class MarkReadReceiver : ActionReceiver(name = "MarkRead", "Mark message read")
8392
/**
8493
* Broadcast when the user clicks the `Trash` notification action.
8594
*/
86-
class MoveToTrashReceiver : ActionReceiver(name = "MoveToTrash", "Move message to trash") {
95+
class MoveToTrashReceiver : ActionReceiver(
96+
name = "MoveToTrash",
97+
R.string.msg_trash_success,
98+
R.string.msg_trash_fail
99+
) {
87100
companion object {
88101
fun newIntent(
89102
context: Context,
@@ -104,7 +117,11 @@ class MoveToTrashReceiver : ActionReceiver(name = "MoveToTrash", "Move message t
104117
/**
105118
* Broadcast when the user clicks the `Spam` notification action.
106119
*/
107-
class MoveToSpamReceiver : ActionReceiver("MoveToSpam", "Move message to spam") {
120+
class MoveToSpamReceiver : ActionReceiver(
121+
"MoveToSpam",
122+
R.string.msg_spam_success,
123+
R.string.msg_spam_fail
124+
) {
108125
companion object {
109126
fun newIntent(
110127
context: Context,

you-have-mail-android/app/src/main/java/dev/lbeernaert/youhavemail/app/ActionWorker.kt

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@ import androidx.work.OneTimeWorkRequest
1111
import androidx.work.WorkManager
1212
import androidx.work.Worker
1313
import androidx.work.WorkerParameters
14+
import dev.lbeernaert.youhavemail.R
1415
import dev.lbeernaert.youhavemail.Yhm
1516

1617
private const val TAG = "ActionWorker"
1718
private const val EmailKey = "Email"
1819
private const val ActionKey = "Key"
19-
private const val ActionDescKey = "ActionDesc"
20+
private const val ActionDescSuccessKey = "ActionDescSuccess"
21+
private const val ActionDescFailKey = "ActionDescFailure"
2022

2123
/**
2224
* Worker which execute an action
@@ -30,15 +32,18 @@ class ActionWorker(ctx: Context, params: WorkerParameters) :
3032
if (email == null || action == null) {
3133
return Result.failure()
3234
}
33-
val actionDesc = this.inputData.getString(ActionDescKey)
35+
val actionDescSuccess =
36+
this.inputData.getInt(ActionDescSuccessKey, R.string.msg_action_success)
37+
val actionDescFail =
38+
this.inputData.getInt(ActionDescFailKey, R.string.msg_action_fail)
3439
Log.i(TAG, "email=$email action=$action")
3540
val handler = Handler(applicationContext.mainLooper);
3641
return try {
3742
executeAction(applicationContext, email, action)
3843
handler.postDelayed({
3944
Toast.makeText(
4045
applicationContext,
41-
"$actionDesc success",
46+
actionDescSuccess,
4247
Toast.LENGTH_LONG
4348
)
4449
.show()
@@ -49,7 +54,7 @@ class ActionWorker(ctx: Context, params: WorkerParameters) :
4954
handler.postDelayed({
5055
Toast.makeText(
5156
applicationContext,
52-
"$actionDesc failed: $e",
57+
actionDescFail,
5358
Toast.LENGTH_LONG
5459
)
5560
.show()
@@ -59,15 +64,22 @@ class ActionWorker(ctx: Context, params: WorkerParameters) :
5964
}
6065

6166
companion object {
62-
fun queue(context: Context, email: String, action: String, description: String) {
67+
fun queue(
68+
context: Context,
69+
email: String,
70+
action: String,
71+
successString: Int,
72+
failureString: Int
73+
) {
6374
val constraint =
6475
Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build()
6576
val wm = WorkManager.getInstance(context)
6677

6778
val inputData =
68-
Data.Builder().putString(EmailKey, email).putString(ActionKey, action).putString(
69-
ActionDescKey, description
70-
).build()
79+
Data.Builder().putString(EmailKey, email)
80+
.putString(ActionKey, action)
81+
.putInt(ActionDescSuccessKey, successString)
82+
.putInt(ActionDescFailKey, failureString).build()
7183

7284
val work = OneTimeWorkRequest.Builder(ActionWorker::class.java)
7385
.setInputData(inputData).setConstraints(constraint)

you-have-mail-android/app/src/main/java/dev/lbeernaert/youhavemail/app/Notifications.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import android.media.RingtoneManager
1313
import android.util.Log
1414
import androidx.core.app.NotificationCompat
1515
import androidx.core.app.NotificationManagerCompat
16+
import androidx.core.content.ContextCompat.getString
1617
import dev.lbeernaert.youhavemail.MainActivity
1718
import dev.lbeernaert.youhavemail.NewEmail
1819
import dev.lbeernaert.youhavemail.OpenAppActivity
@@ -285,7 +286,7 @@ class NotificationState {
285286
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
286287
)
287288

288-
builder.addAction(0, "Trash", pendingIntent)
289+
builder.addAction(0, getString(context, R.string.action_trash), pendingIntent)
289290
}
290291

291292
if (newEmail.moveToSpamAction != null) {
@@ -302,7 +303,7 @@ class NotificationState {
302303
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
303304
)
304305

305-
builder.addAction(0, "Spam", pendingIntent)
306+
builder.addAction(0, getString(context, R.string.action_spam), pendingIntent)
306307
}
307308

308309
if (newEmail.markAsReadAction != null) {
@@ -319,7 +320,7 @@ class NotificationState {
319320
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
320321
)
321322

322-
builder.addAction(0, "Mark Read", pendingIntent)
323+
builder.addAction(0, getString(context, R.string.action_mark_read), pendingIntent)
323324
}
324325

325326
return builder

you-have-mail-android/app/src/main/res/values/strings.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,15 @@
6969
<string name="empty_email_or_password_info">Email and password fields cannot be empty</string>
7070
<string name="invalid_email_address">E-mail address seems to be invalid. Verify if it is correctly typed.</string>
7171
<string name="service_uninitialized">Service failed to initialize.</string>
72+
<string name="msg_mark_read_success">Message marked as read</string>
73+
<string name="msg_mark_read_fail">Failed to mark message as read</string>
74+
<string name="msg_trash_success">Message moved to Trash</string>
75+
<string name="msg_trash_fail">Failed to move message to Trash</string>
76+
<string name="msg_spam_success">Message moved to Spam</string>
77+
<string name="msg_spam_fail">Failed to move message to Spam</string>
78+
<string name="msg_action_success">Action Succeeded</string>
79+
<string name="msg_action_fail">Action Failed</string>
80+
<string name="action_mark_read">Mark Read</string>
81+
<string name="action_trash">Trash</string>
82+
<string name="action_spam">Spam</string>
7283
</resources>

0 commit comments

Comments
 (0)