Skip to content

Commit 5069473

Browse files
authored
Merge branch 'develop' into add-folder-type-as-attachement-type
2 parents d7591e3 + 582145a commit 5069473

File tree

11 files changed

+51
-49
lines changed

11 files changed

+51
-49
lines changed

app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ android {
134134
aboutLibraries {
135135
val isAboutLibrariesDisabled = System.getenv("DISABLE_ABOUT_LIBRARIES")?.equals("true", true) ?: false
136136
registerAndroidTasks = !isAboutLibrariesDisabled
137+
excludeFields = arrayOf("generated")
137138
}
138139

139140
dependencies {

app/src/main/kotlin/com/wire/android/di/AppModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ import dagger.Provides
3939
import dagger.hilt.InstallIn
4040
import dagger.hilt.android.qualifiers.ApplicationContext
4141
import dagger.hilt.components.SingletonComponent
42-
import linc.com.amplituda.Amplituda
42+
import com.linc.amplituda.Amplituda
4343
import javax.inject.Named
4444
import javax.inject.Qualifier
4545
import javax.inject.Singleton

app/src/main/kotlin/com/wire/android/mapper/MessageDateGroupingMapper.kt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ private const val ONE_MINUTE_FROM_MILLIS = 60 * 1000
2727
private const val THIRTY_MINUTES = 30
2828
private const val ONE_WEEK_IN_DAYS = 7
2929
private const val ONE_DAY = 1
30-
private const val FORTY_FIVE_MINUTES_DIFFERENCE = 45
3130
private const val MINIMUM_DAYS_DIFFERENCE = 1
3231

3332
fun String.shouldDisplayDatesDifferenceDivider(previousDate: String): Boolean {
@@ -36,17 +35,12 @@ fun String.shouldDisplayDatesDifferenceDivider(previousDate: String): Boolean {
3635
val currentLocalDateTime = currentDate.serverDate()?.toInstant()?.atZone(ZoneId.systemDefault())?.toLocalDateTime()
3736
val previousLocalDateTime = previousDate.serverDate()?.toInstant()?.atZone(ZoneId.systemDefault())?.toLocalDateTime()
3837

39-
val differenceInMinutes = ChronoUnit.MINUTES.between(
40-
currentLocalDateTime,
41-
previousLocalDateTime
42-
)
43-
4438
val differenceInDays = ChronoUnit.DAYS.between(
4539
currentLocalDateTime,
4640
previousLocalDateTime
4741
)
4842

49-
return differenceInMinutes > FORTY_FIVE_MINUTES_DIFFERENCE || differenceInDays >= MINIMUM_DAYS_DIFFERENCE
43+
return differenceInDays >= MINIMUM_DAYS_DIFFERENCE
5044
}
5145

5246
fun String.groupedUIMessageDateTime(now: Long): MessageDateTimeGroup? = this

app/src/main/kotlin/com/wire/android/media/audiomessage/AudioState.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ data class AudioState(
3232
val audioMediaPlayingState: AudioMediaPlayingState,
3333
val currentPositionInMs: Int,
3434
val totalTimeInMs: TotalTimeInMs,
35-
val wavesMask: List<Int>
35+
val wavesMask: List<Int>?
3636
) {
3737
companion object {
38-
val DEFAULT = AudioState(AudioMediaPlayingState.Stopped, 0, TotalTimeInMs.NotKnown, listOf())
38+
val DEFAULT = AudioState(AudioMediaPlayingState.Stopped, 0, TotalTimeInMs.NotKnown, null)
3939
}
4040

4141
// if the back-end returned the total time, we use that, in case it didn't we use what we get from
@@ -146,7 +146,7 @@ sealed class AudioMediaPlayerStateUpdate(
146146
data class WaveMaskUpdate(
147147
override val conversationId: ConversationId,
148148
override val messageId: String,
149-
val waveMask: List<Int>
149+
val waveMask: List<Int>?
150150
) : AudioMediaPlayerStateUpdate(conversationId, messageId)
151151
}
152152

app/src/main/kotlin/com/wire/android/media/audiomessage/AudioWavesMaskHelper.kt

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,30 +17,42 @@
1717
*/
1818
package com.wire.android.media.audiomessage
1919

20-
import linc.com.amplituda.Amplituda
21-
import linc.com.amplituda.Cache
20+
import android.content.Context
21+
import dagger.Lazy
22+
import com.linc.amplituda.Amplituda
23+
import com.linc.amplituda.Cache
24+
import dagger.Reusable
2225
import okio.Path
2326
import java.io.File
2427
import javax.inject.Inject
2528
import kotlin.math.roundToInt
2629

30+
@Reusable
2731
class AudioWavesMaskHelper @Inject constructor(
28-
private val amplituda: Amplituda
32+
private val amplituda: Lazy<Amplituda>
2933
) {
3034

35+
lateinit var context: Context
3136
companion object {
3237
private const val WAVES_AMOUNT = 75
3338
private const val WAVE_MAX = 32
3439
}
3540

36-
fun getWaveMask(decodedAssetPath: Path): List<Int> = getWaveMask(File(decodedAssetPath.toString()))
41+
@Suppress("TooGenericExceptionCaught")
42+
private fun getAmplituda(): Amplituda? = try {
43+
amplituda.get()
44+
} catch (e: NullPointerException) {
45+
null
46+
}
47+
48+
fun getWaveMask(decodedAssetPath: Path): List<Int>? = getWaveMask(File(decodedAssetPath.toString()))
3749

38-
fun getWaveMask(file: File): List<Int> = amplituda
39-
.processAudio(file, Cache.withParams(Cache.REUSE))
40-
.get()
41-
.amplitudesAsList()
42-
.averageWavesMask()
43-
.equalizeWavesMask()
50+
fun getWaveMask(file: File): List<Int>? = getAmplituda()
51+
?.processAudio(file, Cache.withParams(Cache.REUSE))
52+
?.get()
53+
?.amplitudesAsList()
54+
?.averageWavesMask()
55+
?.equalizeWavesMask()
4456

4557
private fun List<Double>.equalizeWavesMask(): List<Int> {
4658
if (this.isEmpty()) return listOf()
@@ -76,6 +88,6 @@ class AudioWavesMaskHelper @Inject constructor(
7688
}
7789

7890
fun clear() {
79-
amplituda.clearCache()
91+
getAmplituda()?.clearCache()
8092
}
8193
}

app/src/main/kotlin/com/wire/android/media/audiomessage/RecordAudioMessagePlayer.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -184,11 +184,13 @@ class RecordAudioMessagePlayer @Inject constructor(
184184
audioMediaPlayer.seekTo(position)
185185
audioMediaPlayer.start()
186186

187-
audioMessageStateUpdate.emit(
188-
RecordAudioMediaPlayerStateUpdate.WaveMaskUpdate(
189-
wavesMaskHelper.getWaveMask(audioFile)
187+
wavesMaskHelper.getWaveMask(audioFile)?.let { waveMask ->
188+
audioMessageStateUpdate.emit(
189+
RecordAudioMediaPlayerStateUpdate.WaveMaskUpdate(
190+
waveMask = waveMask
191+
)
190192
)
191-
)
193+
}
192194

193195
audioMessageStateUpdate.emit(
194196
RecordAudioMediaPlayerStateUpdate.RecordAudioMediaPlayingStateUpdate(

app/src/main/kotlin/com/wire/android/ui/home/conversations/ConversationScreen.kt

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1368,39 +1368,31 @@ private fun MessageGroupDateTime(
13681368

13691369
is MessageDateTimeGroup.Daily -> {
13701370
when (messageDateTimeGroup.type) {
1371-
MessageDateTimeGroup.Daily.Type.Today -> DateUtils.getRelativeDateTimeString(
1372-
context,
1373-
messageDateTime.time,
1374-
DateUtils.DAY_IN_MILLIS,
1375-
DateUtils.DAY_IN_MILLIS,
1376-
0
1377-
).toString()
1378-
1371+
MessageDateTimeGroup.Daily.Type.Today,
13791372
MessageDateTimeGroup.Daily.Type.Yesterday ->
1380-
DateUtils.getRelativeDateTimeString(
1381-
context,
1373+
DateUtils.getRelativeTimeSpanString(
13821374
messageDateTime.time,
1375+
now,
13831376
DateUtils.DAY_IN_MILLIS,
1384-
DateUtils.DAY_IN_MILLIS * 2,
13851377
0
13861378
).toString()
13871379

13881380
MessageDateTimeGroup.Daily.Type.WithinWeek -> DateUtils.formatDateTime(
13891381
context,
13901382
messageDateTime.time,
1391-
DateUtils.FORMAT_SHOW_WEEKDAY or DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_SHOW_TIME
1383+
DateUtils.FORMAT_SHOW_WEEKDAY or DateUtils.FORMAT_SHOW_DATE
13921384
)
13931385

13941386
MessageDateTimeGroup.Daily.Type.NotWithinWeekButSameYear -> DateUtils.formatDateTime(
13951387
context,
13961388
messageDateTime.time,
1397-
DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_SHOW_TIME
1389+
DateUtils.FORMAT_SHOW_WEEKDAY or DateUtils.FORMAT_SHOW_DATE
13981390
)
13991391

14001392
MessageDateTimeGroup.Daily.Type.Other -> DateUtils.formatDateTime(
14011393
context,
14021394
messageDateTime.time,
1403-
DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_SHOW_YEAR or DateUtils.FORMAT_SHOW_TIME
1395+
DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_SHOW_YEAR
14041396
)
14051397
}
14061398
}

app/src/main/kotlin/com/wire/android/ui/home/conversations/model/messagetypes/audio/AudioMessageType.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -335,12 +335,12 @@ fun SuccessfulAudioMessageContent(
335335
private fun AudioMessageSlider(
336336
audioDuration: AudioDuration,
337337
totalTimeInMs: AudioState.TotalTimeInMs,
338-
waveMask: List<Int>,
338+
waveMask: List<Int>?,
339339
onSliderPositionChange: (Float) -> Unit,
340340
) {
341341
Box(modifier = Modifier.fillMaxWidth()) {
342342
val totalMs = if (totalTimeInMs is AudioState.TotalTimeInMs.Known) totalTimeInMs.value.toFloat() else 0f
343-
val waves = waveMask.ifEmpty { getDefaultWaveMask() }
343+
val waves = waveMask?.ifEmpty { getDefaultWaveMask() } ?: getDefaultWaveMask()
344344
val wavesAmount = waves.size
345345

346346
Row(
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
New
2-
- Swipe left to react
3-
2+
- Swipe left to add reactions to a message
3+
Improvement
4+
- Using QR codes with federation
45
Fixes
5-
- QR code with Federation
6-
- Schema restriction for sharing assets
7-
- App stuck while processing MLS messages
6+
- Resolved a security issue when sharing files, pictures, or audio and video messages
7+
- Fixed an issue when people couldn't open conversations from a notification
8+
- Resolved a syncing issue on slow internet

build-logic/plugins/src/main/kotlin/AndroidCoordinates.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ object AndroidSdk {
2626

2727
object AndroidApp {
2828
const val id = "com.wire.android"
29-
const val versionName = "4.12.3"
29+
const val versionName = "4.13.0"
3030
val versionCode by lazy {
3131
Versionizer(_rootDir).versionCode
3232
}

0 commit comments

Comments
 (0)