Skip to content

Commit bfc9b80

Browse files
committed
refactor: use expect class
1 parent 1379561 commit bfc9b80

23 files changed

Lines changed: 68 additions & 74 deletions

File tree

composeApp/src/androidMain/kotlin/paige/navic/di/PlatformModule.android.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,17 @@ package paige.navic.di
33
import androidx.room3.Room
44
import androidx.sqlite.driver.bundled.BundledSQLiteDriver
55
import org.koin.android.ext.koin.androidApplication
6-
import org.koin.android.ext.koin.androidContext
76
import org.koin.core.module.dsl.singleOf
87
import org.koin.dsl.module
98
import paige.navic.data.database.CacheDatabase
109
import paige.navic.data.database.DownloadDatabase
11-
import paige.navic.domain.manager.AndroidBaseDownloadManager
1210
import paige.navic.domain.manager.AppIconManager
13-
import paige.navic.domain.manager.downloads.BaseDownloadManager
1411
import paige.navic.domain.manager.ConnectivityManager
1512
import paige.navic.domain.manager.LogManager
1613
import paige.navic.domain.manager.PermissionManager
1714
import paige.navic.domain.manager.ShareManager
1815
import paige.navic.domain.manager.StorageManager
16+
import paige.navic.domain.manager.base.BaseDownloadManager
1917
import paige.navic.domain.repositories.PlayerStateRepository
2018
import paige.navic.shared.AndroidMediaPlayerViewModel
2119
import paige.navic.shared.MediaPlayerViewModel
@@ -69,7 +67,7 @@ actual val platformModule = module {
6967

7068
singleOf(::ShareManager)
7169
singleOf(::StorageManager)
72-
single<BaseDownloadManager> { AndroidBaseDownloadManager(androidContext(), get()) }
70+
singleOf(::BaseDownloadManager)
7371
singleOf(::ConnectivityManager)
7472
singleOf(::LogManager)
7573
singleOf(::AppIconManager)

composeApp/src/androidMain/kotlin/paige/navic/domain/manager/AndroidBaseDownloadManager.kt renamed to composeApp/src/androidMain/kotlin/paige/navic/domain/manager/base/BaseDownloadManager.android.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
1-
package paige.navic.domain.manager
1+
package paige.navic.domain.manager.base
22

33
import android.app.DownloadManager
44
import android.content.Context
55
import android.database.Cursor
66
import android.net.Uri
77
import android.os.Environment
8+
import androidx.core.net.toUri
9+
import kotlinx.coroutines.Dispatchers
810
import kotlinx.coroutines.delay
911
import kotlinx.coroutines.withContext
10-
import kotlinx.coroutines.Dispatchers
12+
import paige.navic.domain.manager.StorageManager
1113
import paige.navic.domain.models.DomainSong
1214
import java.io.File
13-
import androidx.core.net.toUri
14-
import paige.navic.domain.manager.downloads.BaseDownloadManager
1515
import kotlin.time.Duration.Companion.milliseconds
1616

17-
class AndroidBaseDownloadManager(
17+
actual class BaseDownloadManager(
1818
private val context: Context,
1919
private val storageManager: StorageManager
20-
) : BaseDownloadManager {
20+
) {
2121
private val downloadManager = context.getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager
2222

23-
override suspend fun downloadAudio(
23+
actual suspend fun downloadAudio(
2424
song: DomainSong,
2525
url: String,
2626
extension: String,

composeApp/src/androidMain/kotlin/paige/navic/shared/MediaPlayer.android.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ import paige.navic.data.database.dao.AlbumDao
5454
import paige.navic.data.database.mappers.toDomainModel
5555
import paige.navic.domain.manager.AndroidScrobbleManager
5656
import paige.navic.domain.manager.ConnectivityManager
57-
import paige.navic.domain.manager.downloads.DownloadManager
57+
import paige.navic.domain.manager.DownloadManager
5858
import paige.navic.domain.manager.PreferenceManager
5959
import paige.navic.domain.manager.SessionManager
6060
import paige.navic.domain.manager.SnackBarManager

composeApp/src/commonMain/kotlin/paige/navic/di/ManagerModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package paige.navic.di
22

33
import org.koin.core.module.dsl.singleOf
44
import org.koin.dsl.module
5-
import paige.navic.domain.manager.downloads.DownloadManager
5+
import paige.navic.domain.manager.DownloadManager
66
import paige.navic.domain.manager.LoginManager
77
import paige.navic.domain.manager.PreferenceManager
88
import paige.navic.domain.manager.SessionManager

composeApp/src/commonMain/kotlin/paige/navic/domain/manager/downloads/DownloadManager.kt renamed to composeApp/src/commonMain/kotlin/paige/navic/domain/manager/DownloadManager.kt

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
package paige.navic.domain.manager.downloads
1+
package paige.navic.domain.manager
22

3+
import coil3.PlatformContext
34
import coil3.SingletonImageLoader
45
import coil3.request.CachePolicy
56
import coil3.request.ImageRequest
@@ -29,19 +30,15 @@ import paige.navic.data.database.dao.LyricDao
2930
import paige.navic.data.database.entities.DownloadEntity
3031
import paige.navic.data.database.entities.DownloadStatus
3132
import paige.navic.data.database.entities.LyricEntity
32-
import paige.navic.domain.manager.ConnectivityManager
33-
import paige.navic.domain.manager.PreferenceManager
34-
import paige.navic.domain.manager.SessionManager
35-
import paige.navic.domain.manager.StorageManager
33+
import paige.navic.domain.manager.base.BaseDownloadManager
3634
import paige.navic.domain.models.DomainSong
3735
import paige.navic.domain.models.DomainSongCollection
3836
import paige.navic.domain.repositories.LyricsRepository
3937
import paige.navic.util.core.Logger
4038
import paige.navic.util.core.PlatformType
41-
import coil3.PlatformContext as CoilPlatformContext
4239

4340
class DownloadManager(
44-
private val coilPlatformContext: CoilPlatformContext,
41+
private val coilPlatformContext: PlatformContext,
4542
private val downloadDao: DownloadDao,
4643
private val albumDao: AlbumDao,
4744
private val storageManager: StorageManager,
@@ -58,7 +55,7 @@ class DownloadManager(
5855
private val activeDownloadsMutex = Mutex()
5956
private val activeDownloads = mutableMapOf<String, Job>()
6057
private val downloadSemaphore =
61-
Semaphore(10)// idk a good number, maybe u should be able to choose
58+
Semaphore(10)// idk a good number, maybe u should be able to choose
6259

6360
private var libraryDownloadJob: Job? = null
6461

@@ -100,7 +97,7 @@ class DownloadManager(
10097
if (alreadyActive) return@launch
10198

10299
try {
103-
activeDownloadsMutex.withLock { activeDownloads[song.id] = coroutineContext[Job]!! }
100+
activeDownloadsMutex.withLock { activeDownloads[song.id] = coroutineContext[Job.Key]!! }
104101

105102
downloadSemaphore.withPermit {
106103
executeDownloadProcess(song)
@@ -318,11 +315,11 @@ class DownloadManager(
318315
val lyricsResult = lyricsRepository.fetchLyrics(song)
319316
if (lyricsResult != null && lyricsResult.rawContent != null) {
320317
lyricDao.insertLyrics(
321-
LyricEntity(
322-
song.id,
323-
lyricsResult.rawContent,
324-
lyricsResult.provider
325-
)
318+
LyricEntity(
319+
song.id,
320+
lyricsResult.rawContent,
321+
lyricsResult.provider
322+
)
326323
)
327324
Logger.i("DownloadManager", "cached lyrics for ${song.id}")
328325
}
@@ -386,12 +383,12 @@ class DownloadManager(
386383
progressJob?.cancel()
387384

388385
downloadDao.insertDownload(
389-
DownloadEntity(
390-
song.id,
391-
DownloadStatus.DOWNLOADED,
392-
1f,
393-
path
394-
)
386+
DownloadEntity(
387+
song.id,
388+
DownloadStatus.DOWNLOADED,
389+
1f,
390+
path
391+
)
395392
)
396393
}
397394
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package paige.navic.domain.manager.base
2+
3+
import paige.navic.domain.models.DomainSong
4+
5+
expect class BaseDownloadManager {
6+
suspend fun downloadAudio(
7+
song: DomainSong,
8+
url: String,
9+
extension: String,
10+
headers: Map<String, String>,
11+
onProgress: suspend (Float) -> Unit
12+
): String
13+
}

composeApp/src/commonMain/kotlin/paige/navic/domain/manager/downloads/BaseDownloadManager.kt

Lines changed: 0 additions & 13 deletions
This file was deleted.

composeApp/src/commonMain/kotlin/paige/navic/shared/MediaPlayer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import kotlinx.coroutines.launch
1212
import kotlinx.serialization.json.Json
1313
import kotlinx.serialization.json.decodeFromJsonElement
1414
import paige.navic.domain.manager.ConnectivityManager
15-
import paige.navic.domain.manager.downloads.DownloadManager
15+
import paige.navic.domain.manager.DownloadManager
1616
import paige.navic.domain.manager.PreferenceManager
1717
import paige.navic.domain.models.DomainExplicitStatus
1818
import paige.navic.domain.models.DomainRadio

composeApp/src/commonMain/kotlin/paige/navic/ui/screens/album/components/Item.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import navic.composeapp.generated.resources.notice_download_started
1818
import org.koin.compose.koinInject
1919
import paige.navic.LocalNavStack
2020
import paige.navic.data.database.entities.DownloadStatus
21-
import paige.navic.domain.manager.downloads.DownloadManager
21+
import paige.navic.domain.manager.DownloadManager
2222
import paige.navic.domain.manager.SnackBarManager
2323
import paige.navic.domain.models.DomainAlbum
2424
import paige.navic.ui.components.layouts.ArtGridItem

composeApp/src/commonMain/kotlin/paige/navic/ui/screens/artist/ArtistDetailScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ import org.koin.core.parameter.parametersOf
7171
import paige.navic.LocalBottomBarScrollManager
7272
import paige.navic.LocalNavStack
7373
import paige.navic.data.database.entities.DownloadStatus
74-
import paige.navic.domain.manager.downloads.DownloadManager
74+
import paige.navic.domain.manager.DownloadManager
7575
import paige.navic.domain.manager.PreferenceManager
7676
import paige.navic.domain.manager.SnackBarManager
7777
import paige.navic.domain.models.DomainSongListType

0 commit comments

Comments
 (0)