diff --git a/app/build.gradle b/app/build.gradle
index a1e7d8e8f9..a98704ca2c 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -31,8 +31,8 @@ configurations.all {
exclude module: "commons-logging"
}
-def canonicalVersionCode = 358
-def canonicalVersionName = "1.17.3"
+def canonicalVersionCode = 359
+def canonicalVersionName = "1.17.4"
def postFixSize = 10
def abiPostFix = ['armeabi-v7a' : 1,
diff --git a/app/src/androidTest/java/network/loki/messenger/LibSessionTests.kt b/app/src/androidTest/java/network/loki/messenger/LibSessionTests.kt
index fd776fd514..157085135e 100644
--- a/app/src/androidTest/java/network/loki/messenger/LibSessionTests.kt
+++ b/app/src/androidTest/java/network/loki/messenger/LibSessionTests.kt
@@ -11,16 +11,19 @@ import network.loki.messenger.libsession_util.ConversationVolatileConfig
import network.loki.messenger.libsession_util.util.Contact
import network.loki.messenger.libsession_util.util.Conversation
import network.loki.messenger.libsession_util.util.ExpiryMode
+import org.hamcrest.CoreMatchers.equalTo
+import org.hamcrest.CoreMatchers.instanceOf
+import org.hamcrest.MatcherAssert.assertThat
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
+import org.mockito.kotlin.any
import org.mockito.kotlin.argThat
import org.mockito.kotlin.argWhere
import org.mockito.kotlin.eq
import org.mockito.kotlin.spy
import org.mockito.kotlin.verify
import org.session.libsession.messaging.MessagingModuleConfiguration
-import org.session.libsession.messaging.messages.ExpirationConfiguration
import org.session.libsession.snode.SnodeAPI
import org.session.libsession.utilities.Address
import org.session.libsession.utilities.TextSecurePreferences
@@ -110,7 +113,7 @@ class LibSessionTests {
fakePollNewConfig(contacts, newContactMerge)
verify(storageSpy).addLibSessionContacts(argThat {
first().let { it.id == newContactId && it.approved } && size == 1
- }, 0)
+ }, any())
verify(storageSpy).setRecipientApproved(argThat { address.serialize() == newContactId }, eq(true))
}
@@ -135,17 +138,58 @@ class LibSessionTests {
val contacts = MessagingModuleConfiguration.shared.configFactory.contacts!!
val newContactMerge = buildContactMessage(listOf(newContact))
val newVolatileMerge = buildVolatileMessage(listOf(newConvo))
- val expConfig = ExpirationConfiguration()
- val recipientAddress = Address.fromSerialized(randomRecipient)
fakePollNewConfig(contacts, newContactMerge)
fakePollNewConfig(volatiles, newVolatileMerge)
- val threadId = storageSpy.getThreadId(recipientAddress)!!
-// whenever(storageSpy.getExpirationConfiguration(eq(threadId))).thenReturn(expConfig)
-// doNothing().whenever(storageSpy).setExpirationConfiguration(any())
-// verify(storageSpy).getExpirationConfiguration(eq(threadId))
verify(storageSpy).setExpirationConfiguration(argWhere { config ->
config.expiryMode is ExpiryMode.AfterSend
+ && config.expiryMode.expirySeconds == 1000L
})
+ val threadId = storageSpy.getThreadId(Address.fromSerialized(randomRecipient))!!
+ val newExpiry = storageSpy.getExpirationConfiguration(threadId)!!
+ assertThat(newExpiry.expiryMode, instanceOf(ExpiryMode.AfterSend::class.java))
+ assertThat(newExpiry.expiryMode.expirySeconds, equalTo(1000))
+ assertThat(newExpiry.expiryMode.expiryMillis, equalTo(1000000))
+ }
+
+ @Test
+ fun test_overwrite_config() {
+ val app = InstrumentationRegistry.getInstrumentation().targetContext.applicationContext as ApplicationContext
+ val storageSpy = spy(app.storage)
+ app.storage = storageSpy
+
+ // Initial state
+ val randomRecipient = randomSessionId()
+ val currentContact = Contact(
+ id = randomRecipient,
+ approved = true,
+ expiryMode = ExpiryMode.NONE
+ )
+ val newConvo = Conversation.OneToOne(
+ randomRecipient,
+ SnodeAPI.nowWithOffset,
+ false
+ )
+ val volatiles = MessagingModuleConfiguration.shared.configFactory.convoVolatile!!
+ val contacts = MessagingModuleConfiguration.shared.configFactory.contacts!!
+ val newContactMerge = buildContactMessage(listOf(currentContact))
+ val newVolatileMerge = buildVolatileMessage(listOf(newConvo))
+ fakePollNewConfig(contacts, newContactMerge)
+ fakePollNewConfig(volatiles, newVolatileMerge)
+ verify(storageSpy).setExpirationConfiguration(argWhere { config ->
+ config.expiryMode == ExpiryMode.NONE
+ })
+ val threadId = storageSpy.getThreadId(Address.fromSerialized(randomRecipient))!!
+ val currentExpiryConfig = storageSpy.getExpirationConfiguration(threadId)!!
+ assertThat(currentExpiryConfig.expiryMode, equalTo(ExpiryMode.NONE))
+ assertThat(currentExpiryConfig.expiryMode.expirySeconds, equalTo(0))
+ assertThat(currentExpiryConfig.expiryMode.expiryMillis, equalTo(0))
+ // Set new state and overwrite
+ val updatedContact = currentContact.copy(expiryMode = ExpiryMode.AfterSend(1000))
+ val updateContactMerge = buildContactMessage(listOf(updatedContact))
+ fakePollNewConfig(contacts, updateContactMerge)
+ val updatedExpiryConfig = storageSpy.getExpirationConfiguration(threadId)!!
+ assertThat(updatedExpiryConfig.expiryMode, instanceOf(ExpiryMode.AfterSend::class.java))
+ assertThat(updatedExpiryConfig.expiryMode.expirySeconds, equalTo(1000))
}
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 55032d4b97..c89fca8a70 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -34,6 +34,8 @@
+
+
@@ -310,11 +312,15 @@
android:value="org.thoughtcrime.securesms.home.HomeActivity" />
+ android:exported="false" android:foregroundServiceType="specialUse">
+
+
+
= 34) {
+ startForeground(SERVICE_RUNNING_ID, builder.build(), ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE);
+ } else {
+ startForeground(SERVICE_RUNNING_ID, builder.build());
+ }
}
private PendingIntent buildLockIntent() {