Skip to content

Commit 12ef33f

Browse files
Merge pull request #1179 from session-foundation/release/1.24.0
Network Page > Master
2 parents 6802fac + fd6fd5e commit 12ef33f

File tree

110 files changed

+4548
-454
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

110 files changed

+4548
-454
lines changed

app/build.gradle

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ configurations.configureEach {
1515
exclude module: "commons-logging"
1616
}
1717

18-
def canonicalVersionCode = 408
19-
def canonicalVersionName = "1.23.2"
18+
def canonicalVersionCode = 409
19+
def canonicalVersionName = "1.24.0"
2020

2121
def postFixSize = 10
2222
def abiPostFix = ['armeabi-v7a' : 1,
@@ -55,7 +55,6 @@ android {
5555
}
5656
}
5757

58-
5958
splits {
6059
abi {
6160
enable !project.hasProperty('huawei') // huawei builds do not need the split variants

app/src/main/AndroidManifest.xml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@
8181
android:networkSecurityConfig="@xml/network_security_configuration"
8282
android:supportsRtl="true"
8383
android:theme="@style/Theme.Session.DayNight"
84-
tools:replace="android:allowBackup,android:label" >
84+
tools:replace="android:allowBackup,android:label">
8585

8686
<!-- Disable all analytics -->
8787
<meta-data
@@ -133,10 +133,16 @@
133133
android:exported="false"
134134
android:label="@string/sessionMessageRequests"
135135
android:screenOrientation="portrait" />
136+
136137
<activity
137138
android:name="org.thoughtcrime.securesms.preferences.SettingsActivity"
138139
android:screenOrientation="portrait"
139-
android:label="@string/sessionSettings" />
140+
android:label="@string/sessionSettings" >
141+
<meta-data
142+
android:name="android.support.PARENT_ACTIVITY"
143+
android:value="org.thoughtcrime.securesms.home.HomeActivity" />
144+
</activity>
145+
140146
<activity
141147
android:name="org.thoughtcrime.securesms.debugmenu.DebugActivity"
142148
android:screenOrientation="portrait"
@@ -318,6 +324,15 @@
318324
<activity android:name="org.thoughtcrime.securesms.migration.DatabaseMigrationStateActivity" />
319325
<activity android:name="org.thoughtcrime.securesms.preferences.appearance.AppDisguiseSettingsActivity" />
320326

327+
<activity
328+
android:name="org.thoughtcrime.securesms.tokenpage.TokenPageActivity"
329+
android:launchMode="singleTop"
330+
android:theme="@style/Theme.Session.DayNight.NoActionBar" >
331+
<meta-data
332+
android:name="android.support.PARENT_ACTIVITY"
333+
android:value="org.thoughtcrime.securesms.preferences.SettingsActivity" />
334+
</activity>
335+
321336
<service
322337
android:name="org.thoughtcrime.securesms.service.KeyCachingService"
323338
android:enabled="true"

app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ import org.thoughtcrime.securesms.service.ExpiringMessageManager
102102
import org.thoughtcrime.securesms.service.KeyCachingService
103103
import org.thoughtcrime.securesms.sskenvironment.ReadReceiptManager
104104
import org.thoughtcrime.securesms.sskenvironment.TypingStatusRepository
105+
import org.thoughtcrime.securesms.tokenpage.TokenDataManager
105106
import org.thoughtcrime.securesms.util.AppVisibilityManager
106107
import org.thoughtcrime.securesms.util.Broadcaster
107108
import org.thoughtcrime.securesms.util.VersionDataFetcher
@@ -163,6 +164,7 @@ class ApplicationContext : Application(), DefaultLifecycleObserver,
163164
@Inject lateinit var adminStateSync: Lazy<AdminStateSync>
164165
@Inject lateinit var destroyedGroupSync: Lazy<DestroyedGroupSync>
165166
@Inject lateinit var removeGroupMemberHandler: Lazy<RemoveGroupMemberHandler> // Exists here only to start upon app starts
167+
@Inject lateinit var tokenDataManager: Lazy<TokenDataManager> // Exists here only to start upon app starts
166168
@Inject lateinit var snodeClock: Lazy<SnodeClock>
167169
@Inject lateinit var migrationManager: Lazy<DatabaseMigrationManager>
168170
@Inject lateinit var appDisguiseManager: Lazy<AppDisguiseManager>
@@ -318,6 +320,7 @@ class ApplicationContext : Application(), DefaultLifecycleObserver,
318320
destroyedGroupSync.get().start()
319321
adminStateSync.get().start()
320322
cleanupInvitationHandler.get().start()
323+
tokenDataManager.get().getTokenDataWhenLoggedIn()
321324

322325
// Start our migration process as early as possible so we can show the user a progress UI
323326
migrationManager.get().requestMigration(fromRetry = false)

app/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@
9595
import network.loki.messenger.databinding.MediaPreviewActivityBinding;
9696
import network.loki.messenger.databinding.MediaViewPageBinding;
9797

98+
9899
/**
99100
* Activity for displaying media attachments in-app
100101
*/
@@ -103,7 +104,6 @@ public class MediaPreviewActivity extends ScreenLockActionBarActivity implements
103104
LoaderManager.LoaderCallbacks<Pair<Cursor, Integer>>,
104105
MediaRailAdapter.RailItemListener
105106
{
106-
107107
private final static String TAG = MediaPreviewActivity.class.getSimpleName();
108108

109109
private static final int UI_ANIMATION_DELAY = 300;
@@ -132,6 +132,9 @@ public class MediaPreviewActivity extends ScreenLockActionBarActivity implements
132132

133133
private boolean isFullscreen = false;
134134
private final Handler hideHandler = new Handler(Looper.myLooper());
135+
136+
@Inject DateUtils dateUtils;
137+
135138
private final Runnable showRunnable = () -> {
136139
getSupportActionBar().show();
137140
};
@@ -229,7 +232,7 @@ private void updateActionBar() {
229232
CharSequence relativeTimeSpan;
230233

231234
if (mediaItem.date > 0) {
232-
relativeTimeSpan = DateUtils.INSTANCE.getDisplayFormattedTimeSpanString(this, Locale.getDefault(), mediaItem.date);
235+
relativeTimeSpan = dateUtils.getDisplayFormattedTimeSpanString(Locale.getDefault(), mediaItem.date);
233236
} else {
234237
relativeTimeSpan = getString(R.string.draft);
235238
}

app/src/main/java/org/thoughtcrime/securesms/conversation/start/newmessage/NewMessageViewModel.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import android.app.Application
44
import androidx.lifecycle.AndroidViewModel
55
import androidx.lifecycle.viewModelScope
66
import dagger.hilt.android.lifecycle.HiltViewModel
7-
import java.util.concurrent.TimeoutException
87
import javax.inject.Inject
98
import kotlinx.coroutines.Job
109
import kotlinx.coroutines.channels.BufferOverflow

app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,7 @@ class ConversationActivityV2 : ScreenLockActionBarActivity(), InputBarDelegate,
251251
@Inject lateinit var reactionDb: ReactionDatabase
252252
@Inject lateinit var viewModelFactory: ConversationViewModel.AssistedFactory
253253
@Inject lateinit var mentionViewModelFactory: MentionViewModel.AssistedFactory
254+
@Inject lateinit var dateUtils: DateUtils
254255
@Inject lateinit var configFactory: ConfigFactory
255256
@Inject lateinit var groupManagerV2: GroupManagerV2
256257
@Inject lateinit var typingStatusRepository: TypingStatusRepository
@@ -2244,7 +2245,6 @@ class ConversationActivityV2 : ScreenLockActionBarActivity(), InputBarDelegate,
22442245
}
22452246
}
22462247

2247-
22482248
override fun sendVoiceMessage() {
22492249
Log.i(TAG, "Sending voice message at: ${System.currentTimeMillis()}")
22502250

@@ -2368,7 +2368,10 @@ class ConversationActivityV2 : ScreenLockActionBarActivity(), InputBarDelegate,
23682368

23692369
if (TextUtils.isEmpty(body)) { continue }
23702370
if (messageSize > 1) {
2371-
val formattedTimestamp = DateUtils.getDisplayFormattedTimeSpanString(this, Locale.getDefault(), message.timestamp)
2371+
val formattedTimestamp = dateUtils.getDisplayFormattedTimeSpanString(
2372+
Locale.getDefault(),
2373+
message.timestamp
2374+
)
23722375
builder.append("$formattedTimestamp: ")
23732376
}
23742377
builder.append(body)

app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationReactionOverlay.kt

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.animation.Animator
44
import android.animation.AnimatorSet
55
import android.animation.ObjectAnimator
66
import android.animation.ValueAnimator
7+
import android.annotation.SuppressLint
78
import android.app.Activity
89
import android.content.Context
910
import android.graphics.PointF
@@ -25,6 +26,9 @@ import androidx.core.view.isVisible
2526
import androidx.vectordrawable.graphics.drawable.AnimatorInflaterCompat
2627
import com.squareup.phrase.Phrase
2728
import dagger.hilt.android.AndroidEntryPoint
29+
import java.util.Locale
30+
import javax.inject.Inject
31+
import kotlin.time.Duration.Companion.milliseconds
2832
import kotlinx.coroutines.CoroutineScope
2933
import kotlinx.coroutines.Dispatchers
3034
import kotlinx.coroutines.Job
@@ -55,9 +59,6 @@ import org.thoughtcrime.securesms.database.model.ReactionRecord
5559
import org.thoughtcrime.securesms.repository.ConversationRepository
5660
import org.thoughtcrime.securesms.util.AnimationCompleteListener
5761
import org.thoughtcrime.securesms.util.DateUtils
58-
import java.util.Locale
59-
import javax.inject.Inject
60-
import kotlin.time.Duration.Companion.milliseconds
6162

6263
@AndroidEntryPoint
6364
class ConversationReactionOverlay : FrameLayout {
@@ -99,6 +100,7 @@ class ConversationReactionOverlay : FrameLayout {
99100

100101
@Inject lateinit var mmsSmsDatabase: MmsSmsDatabase
101102
@Inject lateinit var repository: ConversationRepository
103+
@Inject lateinit var dateUtils: DateUtils
102104
@Inject lateinit var lokiThreadDatabase: LokiThreadDatabase
103105
@Inject lateinit var threadDatabase: ThreadDatabase
104106
@Inject lateinit var textSecurePreferences: TextSecurePreferences
@@ -154,7 +156,10 @@ class ConversationReactionOverlay : FrameLayout {
154156
val conversationItemSnapshot = selectedConversationModel.bitmap
155157
conversationBubble.layoutParams = LinearLayout.LayoutParams(conversationItemSnapshot.width, conversationItemSnapshot.height)
156158
conversationBubble.background = BitmapDrawable(resources, conversationItemSnapshot)
157-
conversationTimestamp.text = DateUtils.getDisplayFormattedTimeSpanString(context, Locale.getDefault(), messageRecord.timestamp)
159+
conversationTimestamp.text = dateUtils.getDisplayFormattedTimeSpanString(
160+
Locale.getDefault(),
161+
messageRecord.timestamp
162+
)
158163
updateConversationTimestamp(messageRecord)
159164
val isMessageOnLeft = selectedConversationModel.isOutgoing xor ViewUtil.isLtr(this)
160165
conversationItem.scaleX = LONG_PRESS_SCALE_FACTOR
@@ -369,7 +374,6 @@ class ConversationReactionOverlay : FrameLayout {
369374

370375
override fun onDetachedFromWindow() {
371376
super.onDetachedFromWindow()
372-
373377
hide()
374378
}
375379

@@ -642,6 +646,7 @@ class ConversationReactionOverlay : FrameLayout {
642646
})
643647
}
644648

649+
@SuppressLint("RestrictedApi")
645650
private fun initAnimators() {
646651
val revealDuration = context.resources.getInteger(R.integer.reaction_scrubber_reveal_duration)
647652
val revealOffset = context.resources.getInteger(R.integer.reaction_scrubber_reveal_offset)

app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ class ConversationViewModel(
9191
private val groupManagerV2: GroupManagerV2,
9292
private val callManager: CallManager,
9393
val legacyGroupDeprecationManager: LegacyGroupDeprecationManager,
94+
val dateUtils: DateUtils,
9495
private val expiredGroupManager: ExpiredGroupManager,
9596
private val usernameUtils: UsernameUtils
9697

@@ -241,7 +242,7 @@ class ConversationViewModel(
241242
Phrase.from(application, if (admin) R.string.legacyGroupBeforeDeprecationAdmin else R.string.legacyGroupBeforeDeprecationMember)
242243
.put(DATE_KEY,
243244
time.withZoneSameInstant(ZoneId.systemDefault())
244-
.format(DateUtils.getMediumDateTimeFormatter())
245+
.format(dateUtils.getMediumDateTimeFormatter())
245246
)
246247
.format()
247248

@@ -1148,6 +1149,7 @@ class ConversationViewModel(
11481149
private val groupManagerV2: GroupManagerV2,
11491150
private val callManager: CallManager,
11501151
private val legacyGroupDeprecationManager: LegacyGroupDeprecationManager,
1152+
private val dateUtils: DateUtils,
11511153
private val expiredGroupManager: ExpiredGroupManager,
11521154
private val usernameUtils: UsernameUtils,
11531155
) : ViewModelProvider.Factory {
@@ -1169,6 +1171,7 @@ class ConversationViewModel(
11691171
groupManagerV2 = groupManagerV2,
11701172
callManager = callManager,
11711173
legacyGroupDeprecationManager = legacyGroupDeprecationManager,
1174+
dateUtils = dateUtils,
11721175
expiredGroupManager = expiredGroupManager,
11731176
usernameUtils = usernameUtils
11741177
) as T

app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/ControlMessageView.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import org.thoughtcrime.securesms.showSessionDialog
3838
import org.thoughtcrime.securesms.ui.findActivity
3939
import org.thoughtcrime.securesms.ui.getSubbedCharSequence
4040
import org.thoughtcrime.securesms.ui.getSubbedString
41+
import org.thoughtcrime.securesms.util.DateUtils
4142
import javax.inject.Inject
4243

4344

@@ -66,6 +67,7 @@ class ControlMessageView : LinearLayout {
6667
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
6768

6869
@Inject lateinit var disappearingMessages: DisappearingMessages
70+
@Inject lateinit var dateUtils: DateUtils
6971

7072
val controlContentView: View get() = binding.controlContentView
7173

@@ -74,7 +76,7 @@ class ControlMessageView : LinearLayout {
7476
}
7577

7678
fun bind(message: MessageRecord, previous: MessageRecord?, longPress: (() -> Unit)? = null) {
77-
binding.dateBreakTextView.showDateBreak(message, previous)
79+
binding.dateBreakTextView.showDateBreak(message, previous, dateUtils)
7880
binding.iconImageView.isGone = true
7981
binding.expirationTimerView.isGone = true
8082
binding.followSetting.isGone = true

app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/MessageUtilities.kt

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,18 @@ package org.thoughtcrime.securesms.conversation.v2.messages
22

33
import android.widget.TextView
44
import androidx.core.view.isVisible
5+
import java.util.Locale
6+
import kotlin.time.Duration.Companion.minutes
57
import org.thoughtcrime.securesms.database.model.MessageRecord
68
import org.thoughtcrime.securesms.util.DateUtils
7-
import java.util.Locale
89

9-
private const val maxTimeBetweenBreaks = 5 * 60 * 1000L // 5 minutes
10+
private val maxTimeBetweenBreaksMS = 5.minutes.inWholeMilliseconds
1011

11-
fun TextView.showDateBreak(message: MessageRecord, previous: MessageRecord?) {
12-
val showDateBreak = previous == null || message.timestamp - previous.timestamp > maxTimeBetweenBreaks
12+
fun TextView.showDateBreak(message: MessageRecord, previous: MessageRecord?, dateUtils: DateUtils) {
13+
val showDateBreak = (previous == null || message.timestamp - previous.timestamp > maxTimeBetweenBreaksMS)
1314
isVisible = showDateBreak
14-
text = if (showDateBreak) DateUtils.getDisplayFormattedTimeSpanString(context, Locale.getDefault(), message.timestamp) else ""
15-
}
15+
text = if (showDateBreak) dateUtils.getDisplayFormattedTimeSpanString(
16+
Locale.getDefault(),
17+
message.timestamp
18+
) else ""
19+
}

0 commit comments

Comments
 (0)