Start migrating Anvil KSP to Metro
This commit is contained in:
parent
d4d57b1e21
commit
b76a71ebf5
703 changed files with 3523 additions and 2820 deletions
|
|
@ -9,12 +9,12 @@ package io.element.android.libraries.voicerecorder.impl
|
|||
|
||||
import android.Manifest
|
||||
import androidx.annotation.RequiresPermission
|
||||
import com.squareup.anvil.annotations.ContributesBinding
|
||||
import dev.zacsweers.metro.ContributesBinding
|
||||
import io.element.android.appconfig.VoiceMessageConfig
|
||||
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
||||
import io.element.android.libraries.core.coroutine.childScope
|
||||
import io.element.android.libraries.di.RoomScope
|
||||
import io.element.android.libraries.di.SingleIn
|
||||
import dev.zacsweers.metro.SingleIn
|
||||
import io.element.android.libraries.di.annotations.SessionCoroutineScope
|
||||
import io.element.android.libraries.voicerecorder.api.VoiceRecorder
|
||||
import io.element.android.libraries.voicerecorder.api.VoiceRecorderState
|
||||
|
|
@ -37,13 +37,14 @@ import kotlinx.coroutines.yield
|
|||
import timber.log.Timber
|
||||
import java.io.File
|
||||
import java.util.UUID
|
||||
import javax.inject.Inject
|
||||
import dev.zacsweers.metro.Inject
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
import kotlin.time.TimeSource
|
||||
|
||||
@SingleIn(RoomScope::class)
|
||||
@ContributesBinding(RoomScope::class)
|
||||
class DefaultVoiceRecorder @Inject constructor(
|
||||
@Inject
|
||||
class DefaultVoiceRecorder(
|
||||
private val dispatchers: CoroutineDispatchers,
|
||||
private val timeSource: TimeSource,
|
||||
private val audioReaderFactory: AudioReader.Factory,
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import android.media.AudioRecord
|
|||
import android.media.audiofx.AutomaticGainControl
|
||||
import android.media.audiofx.NoiseSuppressor
|
||||
import androidx.annotation.RequiresPermission
|
||||
import com.squareup.anvil.annotations.ContributesBinding
|
||||
import dev.zacsweers.metro.ContributesBinding
|
||||
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
||||
import io.element.android.libraries.core.data.tryOrNull
|
||||
import io.element.android.libraries.di.RoomScope
|
||||
|
|
|
|||
|
|
@ -7,9 +7,9 @@
|
|||
|
||||
package io.element.android.libraries.voicerecorder.impl.audio
|
||||
|
||||
import com.squareup.anvil.annotations.ContributesBinding
|
||||
import dev.zacsweers.metro.ContributesBinding
|
||||
import io.element.android.libraries.di.RoomScope
|
||||
import javax.inject.Inject
|
||||
import dev.zacsweers.metro.Inject
|
||||
import kotlin.math.log10
|
||||
import kotlin.math.sqrt
|
||||
|
||||
|
|
@ -20,7 +20,8 @@ import kotlin.math.sqrt
|
|||
* See: https://en.wikipedia.org/wiki/DBFS
|
||||
*/
|
||||
@ContributesBinding(RoomScope::class)
|
||||
class DBovAudioLevelCalculator @Inject constructor() : AudioLevelCalculator {
|
||||
@Inject
|
||||
class DBovAudioLevelCalculator() : AudioLevelCalculator {
|
||||
override fun calculateAudioLevel(buffer: ShortArray): Float {
|
||||
return buffer.rms().dBov().normalize().coerceIn(0f, 1f)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,19 +7,20 @@
|
|||
|
||||
package io.element.android.libraries.voicerecorder.impl.audio
|
||||
|
||||
import com.squareup.anvil.annotations.ContributesBinding
|
||||
import dev.zacsweers.metro.ContributesBinding
|
||||
import io.element.android.libraries.di.RoomScope
|
||||
import io.element.android.opusencoder.OggOpusEncoder
|
||||
import timber.log.Timber
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Provider
|
||||
import dev.zacsweers.metro.Inject
|
||||
import dev.zacsweers.metro.Provider
|
||||
|
||||
/**
|
||||
* Safe wrapper for OggOpusEncoder.
|
||||
*/
|
||||
@ContributesBinding(RoomScope::class)
|
||||
class DefaultEncoder @Inject constructor(
|
||||
@Inject
|
||||
class DefaultEncoder(
|
||||
private val encoderProvider: Provider<OggOpusEncoder>,
|
||||
config: AudioConfig,
|
||||
) : Encoder {
|
||||
|
|
@ -31,7 +32,7 @@ class DefaultEncoder @Inject constructor(
|
|||
file: File,
|
||||
) {
|
||||
encoder?.release()
|
||||
encoder = encoderProvider.get().apply {
|
||||
encoder = encoderProvider().apply {
|
||||
init(file.absolutePath, sampleRate)
|
||||
setBitrate(bitRate)
|
||||
// TODO check encoder application: 2048 (voice, default is typically 2049 as audio)
|
||||
|
|
|
|||
|
|
@ -9,9 +9,9 @@ package io.element.android.libraries.voicerecorder.impl.di
|
|||
|
||||
import android.media.AudioFormat
|
||||
import android.media.MediaRecorder
|
||||
import com.squareup.anvil.annotations.ContributesTo
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dev.zacsweers.metro.BindingContainer
|
||||
import dev.zacsweers.metro.ContributesTo
|
||||
import dev.zacsweers.metro.Provides
|
||||
import io.element.android.libraries.core.mimetype.MimeTypes
|
||||
import io.element.android.libraries.di.RoomScope
|
||||
import io.element.android.libraries.voicerecorder.impl.audio.AudioConfig
|
||||
|
|
@ -19,7 +19,7 @@ import io.element.android.libraries.voicerecorder.impl.audio.SampleRate
|
|||
import io.element.android.libraries.voicerecorder.impl.file.VoiceFileConfig
|
||||
import io.element.android.opusencoder.OggOpusEncoder
|
||||
|
||||
@Module
|
||||
@BindingContainer
|
||||
@ContributesTo(RoomScope::class)
|
||||
object VoiceRecorderModule {
|
||||
@Provides
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
package io.element.android.libraries.voicerecorder.impl.file
|
||||
|
||||
import com.squareup.anvil.annotations.ContributesBinding
|
||||
import dev.zacsweers.metro.ContributesBinding
|
||||
import io.element.android.libraries.core.hash.md5
|
||||
import io.element.android.libraries.di.CacheDirectory
|
||||
import io.element.android.libraries.di.RoomScope
|
||||
|
|
@ -15,11 +15,13 @@ import io.element.android.libraries.matrix.api.core.RoomId
|
|||
import io.element.android.libraries.matrix.api.room.BaseRoom
|
||||
import java.io.File
|
||||
import java.util.UUID
|
||||
import javax.inject.Inject
|
||||
import dev.zacsweers.metro.Inject
|
||||
import dev.zacsweers.metro.Named
|
||||
|
||||
@ContributesBinding(RoomScope::class)
|
||||
class DefaultVoiceFileManager @Inject constructor(
|
||||
@CacheDirectory private val cacheDir: File,
|
||||
@Inject
|
||||
class DefaultVoiceFileManager(
|
||||
@Named("cacheDirectory") private val cacheDir: File,
|
||||
private val config: VoiceFileConfig,
|
||||
room: BaseRoom,
|
||||
) : VoiceFileManager {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue