Skip to content

Commit

Permalink
Removed 'Muted for' strings and fixed it up to use 'Mute for {large_t…
Browse files Browse the repository at this point in the history
…ime_unit}' across the board
  • Loading branch information
alansley committed Jul 30, 2024
1 parent 84f6f19 commit d568a86
Show file tree
Hide file tree
Showing 112 changed files with 142 additions and 199 deletions.
122 changes: 116 additions & 6 deletions app/src/main/java/org/thoughtcrime/securesms/MuteDialog.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,135 @@ package org.thoughtcrime.securesms
import android.content.Context
import androidx.annotation.StringRes
import androidx.appcompat.app.AlertDialog
import com.squareup.phrase.Phrase
import network.loki.messenger.R
import org.session.libsession.LocalisedTimeUtil
import org.session.libsession.utilities.StringSubstitutionConstants.TIME_LARGE_KEY
import org.session.libsignal.utilities.Log
import java.time.Duration
import java.util.concurrent.TimeUnit
import kotlin.time.Duration.Companion.milliseconds

fun showMuteDialog(
context: Context,
onMuteDuration: (Long) -> Unit
): AlertDialog = context.showSessionDialog {
title(R.string.notificationsMute)
items(Option.values().map { it.stringRes }.map(context::getString).toTypedArray()) {
onMuteDuration(Option.values()[it].getTime())

items(Option.entries.mapIndexed { index, entry ->

if (entry.stringRes == R.string.notificationsMute) {
context.getString(R.string.notificationsMute)
} else {
val largeTimeUnitText = LocalisedTimeUtil.getDurationWithSingleLargestTimeUnit(context, Option.entries[index].getTime().milliseconds)
Phrase.from(context, entry.stringRes)
.put(TIME_LARGE_KEY, largeTimeUnitText)
.format().toString()
}
}.toTypedArray()) {
// Note: We add the current timestamp to the mute duration to get the un-mute timestamp
// that gets stored in the database via ConversationMenuHelper.mute().
onMuteDuration(Option.entries[it].getTime() + System.currentTimeMillis())
}
}

private enum class Option(@StringRes val stringRes: Int, val getTime: () -> Long) {
ONE_HOUR(R.string.notificationsMute1Hour, duration = TimeUnit.HOURS.toMillis(1)),
TWO_HOURS(R.string.notificationsMute2Hours, duration = TimeUnit.DAYS.toMillis(2)),
ONE_DAY(R.string.notificationsMute1Day, duration = TimeUnit.DAYS.toMillis(1)),
SEVEN_DAYS(R.string.notificationsMute1Week, duration = TimeUnit.DAYS.toMillis(7)),
ONE_HOUR(R.string.notificationsMuteFor, duration = TimeUnit.HOURS.toMillis(1)),
TWO_HOURS(R.string.notificationsMuteFor, duration = TimeUnit.HOURS.toMillis(2)),
ONE_DAY(R.string.notificationsMuteFor, duration = TimeUnit.DAYS.toMillis(1)),
SEVEN_DAYS(R.string.notificationsMuteFor, duration = TimeUnit.DAYS.toMillis(7)),
FOREVER(R.string.notificationsMute, getTime = { Long.MAX_VALUE } );

constructor(@StringRes stringRes: Int, duration: Long): this(stringRes, { duration } )
}

/*
package org.thoughtcrime.securesms
import android.content.Context
import androidx.annotation.StringRes
import androidx.appcompat.app.AlertDialog
import androidx.compose.ui.platform.LocalContext
import com.squareup.phrase.Phrase
import network.loki.messenger.R
import org.session.libsession.LocalisedTimeUtil
import org.session.libsession.utilities.StringSubstitutionConstants.TIME_LARGE_KEY
import java.util.concurrent.TimeUnit
import kotlin.time.Duration.Companion.days
import kotlin.time.Duration.Companion.hours
private fun getTimestampOfNowPlusDuration(menuItemIndex: Int): (Int) -> Unit {
when (menuItemIndex) {
0 -> System.currentTimeMillis() + 1.hours.inWholeMilliseconds
1 -> System.currentTimeMillis() + 2.hours.inWholeMilliseconds
2 -> System.currentTimeMillis() + 1.days.inWholeMilliseconds
3 -> System.currentTimeMillis() + 7.days.inWholeMilliseconds
else Long.MAX_VALUE
}
}
fun showMuteDialog(
context: Context,
onMuteDuration: (Long) -> Unit
): AlertDialog {
val c = context
val oneHourString = Phrase.from(c, R.string.notificationsMuteFor)
.put(TIME_LARGE_KEY, LocalisedTimeUtil.getDurationWithSingleLargestTimeUnit(c, 1.hours))
.format().toString()
val oneHourOption:Pair<String, Long> = oneHourString to System.currentTimeMillis() + 1.hours.inWholeMilliseconds
val twoHoursString = Phrase.from(c, R.string.notificationsMuteFor)
.put(TIME_LARGE_KEY, LocalisedTimeUtil.getDurationWithSingleLargestTimeUnit(c, 2.hours))
.format().toString()
val twoHoursOption:Pair<String, Long> = twoHoursString to System.currentTimeMillis() + 2.hours.inWholeMilliseconds
val oneDayString = Phrase.from(c, R.string.notificationsMuteFor)
.put(TIME_LARGE_KEY, LocalisedTimeUtil.getDurationWithSingleLargestTimeUnit(c, 1.days))
.format().toString()
val oneDayOption:Pair<String, Long> = twoHoursString to System.currentTimeMillis() + 1.days.inWholeMilliseconds
val oneWeekString = Phrase.from(c, R.string.notificationsMuteFor)
.put(TIME_LARGE_KEY, LocalisedTimeUtil.getDurationWithSingleLargestTimeUnit(c, 7.days))
.format().toString()
val oneWeekOption:Pair<String, Long> = twoHoursString to System.currentTimeMillis() + 7.days.inWholeMilliseconds
val foreverString = c.getString(R.string.notificationsMute)
val foreverOption = foreverString to Long.MAX_VALUE
val allStrings = arrayOf(oneHourString, twoHoursString, oneDayString, oneWeekString, foreverString)
val allOptions = listOf(oneHourOption, twoHoursOption, oneDayOption, oneWeekOption, foreverOption)
val foo: (Int) -> Unit = { getTimestampOfNowPlusDuration(3) }
context.showSessionDialog {
title(R.string.notificationsMute)
//items(allStrings, onMuteDuration(getTimestampOfNowPlusDuration(allStrings.val))
items(allOptions.map { it.first }.toTypedArray() { allOptions.entries[it].getTime() } )
items(allOptions.map { it.first }.map(it.)) { it.second } Option.entries.map { it.stringRes }.map(
Phrase.from(context, R.string.notificationsMuteFor)
.put(TIME_LARGE_KEY, LocalisedTimeUtil.getDurationWithSingleLargestTimeUnit(context, it.getTime())..format().toString()toType,
context::getString).toTypedArray()) {
onMuteDuration(Option.entries[it].getTime())
}
}
}
private enum class Option(@StringRes val stringRes: Int, val getTime: () -> Long) {
ONE_HOUR(R.string.notificationsMuteFor, duration = 1.hours.inWholeMilliseconds),
TWO_HOURS(R.string.notificationsMuteFor, duration = 2.hours.inWholeMilliseconds),
ONE_DAY(R.string.notificationsMuteFor, duration = 1.days.inWholeMilliseconds),
SEVEN_DAYS(R.string.notificationsMuteFor, duration = 7.days.inWholeMilliseconds),
FOREVER(R.string.notificationsMute, getTime = { Long.MAX_VALUE });
constructor(@StringRes stringRes: Int, duration: Long): this(stringRes, { System.currentTimeMillis() + duration })
}
*/
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class ContactSelectionListLoader(context: Context, val mode: Int, val filter: St
}

private fun getContacts(contacts: List<Recipient>): List<ContactSelectionListItem> {
return getItems(contacts, context.getString(R.string.contactsContacts)) {
return getItems(contacts, context.getString(R.string.contactContacts)) {
!it.isGroupRecipient
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ class ConversationActionBarView @JvmOverloads constructor(
settings += ConversationSetting(
recipient.mutedUntil.takeUnless { it == Long.MAX_VALUE }
?.let {
val mutedDuration = it.milliseconds
val mutedDuration = (it - System.currentTimeMillis()).milliseconds
val durationString = LocalisedTimeUtil.getDurationWithSingleLargestTimeUnit(context, mutedDuration)
Phrase.from(context, R.string.notificationsMuteFor)
.put(TIME_LARGE_KEY, durationString)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,14 @@ import androidx.core.graphics.drawable.IconCompat
import com.squareup.phrase.Phrase
import java.io.IOException
import network.loki.messenger.R
import org.session.libsession.LocalisedTimeUtil
import org.session.libsession.messaging.sending_receiving.MessageSender
import org.session.libsession.messaging.sending_receiving.leave
import org.session.libsession.utilities.GroupUtil.doubleDecodeGroupID
import org.session.libsession.utilities.StringSubstitutionConstants.GROUP_NAME_KEY
import org.session.libsession.utilities.TextSecurePreferences
import org.session.libsession.utilities.recipients.Recipient
import org.session.libsignal.utilities.Log
import org.session.libsignal.utilities.guava.Optional
import org.session.libsignal.utilities.toHexString
import org.thoughtcrime.securesms.MediaOverviewActivity
Expand All @@ -41,6 +43,7 @@ import org.thoughtcrime.securesms.service.WebRtcCallService
import org.thoughtcrime.securesms.showMuteDialog
import org.thoughtcrime.securesms.showSessionDialog
import org.thoughtcrime.securesms.util.BitmapUtil
import kotlin.time.Duration.Companion.milliseconds

object ConversationMenuHelper {

Expand Down Expand Up @@ -322,7 +325,7 @@ object ConversationMenuHelper {
}

private fun mute(context: Context, thread: Recipient) {
showMuteDialog(ContextThemeWrapper(context, context.theme)) { until ->
showMuteDialog(ContextThemeWrapper(context, context.theme)) { until: Long ->
DatabaseComponent.get(context).recipientDatabase().setMuted(thread, until)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,7 @@ class SearchBottomBar : LinearLayout {
}
}
if (count > 0) {
searchPosition.text = Phrase.from(context, R.string.searchMatches)
.put(COUNT_KEY, position + 1)
.put(TOTAL_COUNT_KEY, count)
.format()
searchPosition.text = resources.getQuantityString(R.plurals.searchMatches, count, position + 1, count)
} else {
searchPosition.text = ""
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ private String getDisappearingMsgExpiryTypeString(Context context) {
if (expireStarted >= dateSent) {
return context.getString(R.string.disappearingMessagesSent);
}
return context.getString(R.string.disappearingMessagesRead);
return context.getString(R.string.read);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -521,7 +521,9 @@ private NotificationState constructNotificationState(@NonNull Context context,

// If we received some manner of notification but Session is locked..
} else if (KeyCachingService.isLocked(context)) {
body = SpanUtil.italic(context.getString(R.string.messageNewYouveGotA));
// Note: We provide 0 because `messageNewYouveGot` is now a plurals string and we don't have a count yet, so just
// giving it zero will result in "You got a new message".
body = SpanUtil.italic(context.getResources().getQuantityString(R.plurals.messageNewYouveGot, 0, 0));

// ----- All further cases assume we know the contact and that Session isn't locked -----

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,10 @@ class PushReceiver @Inject constructor(@ApplicationContext val context: Context)
.setSmallIcon(R.drawable.ic_notification)
.setColor(context.getColor(R.color.textsecure_primary))
.setContentTitle(getString(context, R.string.sessionMessenger))
.setContentText(getString(context, R.string.messageNewYouveGotA))

// Note: We set the count to zero in the below plurals string so it says "You've got a new message" (singular)
.setContentText(context.resources.getQuantityString(R.plurals.messageNewYouveGot, 0, 0))

.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setAutoCancel(true)
NotificationManagerCompat.from(context).notify(11111, builder.build())
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/layout/fragment_new_conversation_home.xml
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@
android:paddingHorizontal="@dimen/large_spacing"
android:paddingTop="@dimen/medium_spacing"
android:paddingBottom="@dimen/small_spacing"
android:text="@string/contactsContacts"
android:text="@string/contactContacts"
android:textColor="?android:textColorPrimary"
android:textSize="@dimen/medium_font_size"
app:layout_constraintEnd_toEndOf="parent"
Expand Down
2 changes: 2 additions & 0 deletions content-descriptions/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -186,4 +186,6 @@
<string name="attachment_type_selector__gallery_description">Image or video</string>
<string name="attachment_type_selector__drawer_description">Toggle attachment drawer</string>
<string name="expiration_type_disappear_legacy_description">Original version of disappearing messages.</string>
<string name="expand">Expand</string>

</resources>
2 changes: 0 additions & 2 deletions libsession/src/main/res/values-ar-rSA/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,6 @@
<string name="disappearingMessagesSent">أرسلت</string>
<string name="received">استلمت</string>
<string name="message_details_header__disappears">الاختفاء</string>
<string name="via">بواسطة</string>
<!-- AndroidManifest.xml -->
<!-- arrays.xml -->
<string name="notificationsMute1Hour">كتم لمدة ساعة</string>
Expand Down Expand Up @@ -194,7 +193,6 @@
<string name="useFastMode">استخدام الوضع السريع</string>
<string name="clearDataAll">اِمسح جميع البيانات</string>
<string name="qrCode">رمز QR</string>
<string name="contactsContacts">متصلين</string>
<!-- Next round of translation -->
<string name="done">تم</string>
<string name="groupEdit">عَدِل المجموعة</string>
Expand Down
2 changes: 0 additions & 2 deletions libsession/src/main/res/values-ar/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,6 @@
<string name="disappearingMessagesSent">أرسلت</string>
<string name="received">استلمت</string>
<string name="message_details_header__disappears">الاختفاء</string>
<string name="via">بواسطة</string>
<!-- AndroidManifest.xml -->
<!-- arrays.xml -->
<string name="notificationsMute1Hour">كتم لمدة ساعة</string>
Expand Down Expand Up @@ -194,7 +193,6 @@
<string name="useFastMode">استخدام الوضع السريع</string>
<string name="clearDataAll">اِمسح جميع البيانات</string>
<string name="qrCode">رمز QR</string>
<string name="contactsContacts">متصلين</string>
<!-- Next round of translation -->
<string name="done">تم</string>
<string name="groupEdit">عَدِل المجموعة</string>
Expand Down
2 changes: 0 additions & 2 deletions libsession/src/main/res/values-az-rAZ/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,6 @@
<string name="disappearingMessagesSent">Göndərildi</string>
<string name="received">Alındı</string>
<string name="message_details_header__disappears">Yox olur</string>
<string name="via">Vasitəsilə</string>
<!-- AndroidManifest.xml -->
<!-- arrays.xml -->
<string name="notificationsMute1Hour">1 saatlıq səssizə al</string>
Expand Down Expand Up @@ -194,7 +193,6 @@
<string name="useFastMode">Sürətli rejimi istifadə et</string>
<string name="clearDataAll">Bütün verilənləri təmizlə</string>
<string name="qrCode">QR Kod</string>
<string name="contactsContacts">Əlaqələr</string>
<!-- Next round of translation -->
<string name="done">Bitdi</string>
<string name="groupEdit">Qrupa düzəliş et</string>
Expand Down
2 changes: 0 additions & 2 deletions libsession/src/main/res/values-az/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,6 @@
<string name="disappearingMessagesSent">Göndərildi</string>
<string name="received">Alındı</string>
<string name="message_details_header__disappears">Yox olur</string>
<string name="via">Vasitəsilə</string>
<!-- AndroidManifest.xml -->
<!-- arrays.xml -->
<string name="notificationsMute1Hour">1 saatlıq səssizə al</string>
Expand Down Expand Up @@ -194,7 +193,6 @@
<string name="useFastMode">Sürətli rejimi istifadə et</string>
<string name="clearDataAll">Bütün verilənləri təmizlə</string>
<string name="qrCode">QR Kod</string>
<string name="contactsContacts">Əlaqələr</string>
<!-- Next round of translation -->
<string name="done">Bitdi</string>
<string name="groupEdit">Qrupa düzəliş et</string>
Expand Down
1 change: 0 additions & 1 deletion libsession/src/main/res/values-bal-rBA/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,5 @@
<string name="notificationsStrategy">Strategi notofikasi</string>
<string name="clearDataAll">Hapus semua data</string>
<string name="qrCode">Kode QR</string>
<string name="contactsContacts">Kontak</string>
<!-- Next round of translation -->
</resources>
1 change: 0 additions & 1 deletion libsession/src/main/res/values-bal/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,5 @@
<string name="notificationsStrategy">Strategi notofikasi</string>
<string name="clearDataAll">Hapus semua data</string>
<string name="qrCode">Kode QR</string>
<string name="contactsContacts">Kontak</string>
<!-- Next round of translation -->
</resources>
1 change: 0 additions & 1 deletion libsession/src/main/res/values-bg-rBG/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,6 @@
<string name="disappearingMessagesSent">Изпратен</string>
<string name="received">Получен</string>
<string name="message_details_header__disappears">Изчезва</string>
<string name="via">През</string>
<!-- AndroidManifest.xml -->
<!-- arrays.xml -->
<string name="notificationsMute1Hour">Тих режим за 1 час</string>
Expand Down
1 change: 0 additions & 1 deletion libsession/src/main/res/values-bg/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,6 @@
<string name="disappearingMessagesSent">Изпратен</string>
<string name="received">Получен</string>
<string name="message_details_header__disappears">Изчезва</string>
<string name="via">През</string>
<!-- AndroidManifest.xml -->
<!-- arrays.xml -->
<string name="notificationsMute1Hour">Тих режим за 1 час</string>
Expand Down
2 changes: 0 additions & 2 deletions libsession/src/main/res/values-ca-rES/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,6 @@
<string name="disappearingMessagesSent">Enviat</string>
<string name="received">Rebut</string>
<string name="message_details_header__disappears">Desapareix</string>
<string name="via">Per</string>
<!-- AndroidManifest.xml -->
<!-- arrays.xml -->
<string name="notificationsMute1Hour">Silencia-ho durant 1 hora</string>
Expand Down Expand Up @@ -189,7 +188,6 @@
<string name="notificationsStrategy">Estratègia de les notificacions</string>
<string name="clearDataAll">Esborra totes les dades</string>
<string name="qrCode">Codi QR</string>
<string name="contactsContacts">Contactes</string>
<!-- Next round of translation -->
<string name="done">Fet</string>
<string name="groupEdit">Edita el Grup</string>
Expand Down
2 changes: 0 additions & 2 deletions libsession/src/main/res/values-ca/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,6 @@
<string name="disappearingMessagesSent">Enviat</string>
<string name="received">Rebut</string>
<string name="message_details_header__disappears">Desapareix</string>
<string name="via">Per</string>
<!-- AndroidManifest.xml -->
<!-- arrays.xml -->
<string name="notificationsMute1Hour">Silencia-ho durant 1 hora</string>
Expand Down Expand Up @@ -189,7 +188,6 @@
<string name="notificationsStrategy">Estratègia de les notificacions</string>
<string name="clearDataAll">Esborra totes les dades</string>
<string name="qrCode">Codi QR</string>
<string name="contactsContacts">Contactes</string>
<!-- Next round of translation -->
<string name="done">Fet</string>
<string name="groupEdit">Edita el Grup</string>
Expand Down
2 changes: 0 additions & 2 deletions libsession/src/main/res/values-cs-rCZ/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,6 @@
<string name="disappearingMessagesSent">Odesláno</string>
<string name="received">Přijato</string>
<string name="message_details_header__disappears">Zmizí</string>
<string name="via">Přes</string>
<!-- AndroidManifest.xml -->
<!-- arrays.xml -->
<string name="notificationsMute1Hour">Ztišit na 1 hodinu</string>
Expand Down Expand Up @@ -194,7 +193,6 @@
<string name="useFastMode">Použít rychlý režim</string>
<string name="clearDataAll">Vymazat všechna data</string>
<string name="qrCode">QR kód</string>
<string name="contactsContacts">Kontakty</string>
<!-- Next round of translation -->
<string name="done">Hotovo</string>
<string name="groupEdit">Upravit skupinu</string>
Expand Down
Loading

0 comments on commit d568a86

Please sign in to comment.