Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .idea/AndroidProjectSystem.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions .idea/deploymentTargetSelector.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions .idea/deviceManager.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 18 additions & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ plugins {

android {
namespace = "com.example.playlistmaker"
compileSdk = 34
compileSdk = 35

defaultConfig {
applicationId = "com.example.playlistmaker"
Expand Down Expand Up @@ -47,6 +47,10 @@ android {
checkReleaseBuilds = false
abortOnError = false
}
buildFeatures { compose = true }
composeOptions {
kotlinCompilerExtensionVersion = "1.5.10"
}
}

dependencies {
Expand Down Expand Up @@ -77,4 +81,17 @@ dependencies {
implementation("androidx.room:room-runtime:2.6.1")
kapt("androidx.room:room-compiler:2.6.1")
implementation("androidx.room:room-ktx:2.6.1")
val composeBom = platform("androidx.compose:compose-bom:2024.06.00")
implementation(composeBom)
androidTestImplementation(composeBom)
implementation("androidx.activity:activity-compose:1.8.0")
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.material3:material3")
implementation("androidx.compose.ui:ui-tooling-preview")
debugImplementation("androidx.compose.ui:ui-tooling")
implementation("androidx.compose.runtime:runtime-livedata")
implementation("androidx.lifecycle:lifecycle-runtime-compose:2.8.0")
implementation("io.coil-kt:coil-compose:2.7.0")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Все новые зависимости стоит делать через version catalog механизм - файл libs.versions.toml, чтобы все внешние зависимости проекта находились в одном месте - так удобнее будет с ними работать, а также все модули проекта будут зависеть от одних и тех же версий сторонних зависимостей. В Android Studio можно это сделать автоматически - нужно поставить каретку на зависимость, нажать Alt + Enter (cmd + Enter на маке) и выбрать соответствующий пункт, чтобы автоматически мигрировать зависимость на versions catalog

implementation("androidx.compose.material:material")
implementation("androidx.compose.material:material-icons-extended")
}
4 changes: 3 additions & 1 deletion app/src/main/java/com/example/playlistmaker/App.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import com.example.playlistmaker.di.DomainModule
import com.example.playlistmaker.di.dataModule
import com.example.playlistmaker.di.repositoryModule
import com.example.playlistmaker.di.interactorModule
import com.example.playlistmaker.di.mediaLibraryComposeModule
import com.example.playlistmaker.di.mediaModule
import com.example.playlistmaker.di.viewModelModule
import com.example.playlistmaker.di.navigationModule
Expand All @@ -29,7 +30,8 @@ class App : Application() {
mediaModule,
navigationModule,
DomainModule,
playlistWorkModule
playlistWorkModule,
mediaLibraryComposeModule
)
}

Expand Down
24 changes: 10 additions & 14 deletions app/src/main/java/com/example/playlistmaker/di/ViewModelModule.kt
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
package com.example.playlistmaker.di

import com.example.playlistmaker.media.domain.interactor.PlaylistInteractor
import com.example.playlistmaker.media.ui.MediaLibraryViewModel
import com.example.playlistmaker.media.ui.PlaylistUi
import com.example.playlistmaker.media.ui.viewmodel.CreatePlaylistViewModel
import com.example.playlistmaker.media.ui.viewmodel.FavoritesViewModel
import com.example.playlistmaker.media.ui.viewmodel.PlaylistViewModel
import com.example.playlistmaker.media.ui.viewmodel.PlaylistsViewModel
import com.example.playlistmaker.search.ui.viewmodel.SearchViewModel
import com.example.playlistmaker.player.domain.interactor.FavoritesInteractor
import com.example.playlistmaker.player.ui.viewmodel.PlayerViewModel
import com.example.playlistmaker.search.domain.model.Track
import com.example.playlistmaker.search.ui.viewmodel.SearchViewModel
import com.example.playlistmaker.settings.ui.viewmodel.SettingsViewModel
import kotlinx.coroutines.flow.first
import org.koin.androidx.viewmodel.dsl.viewModel
import org.koin.core.qualifier.named
import org.koin.dsl.module

val viewModelModule = module {
Expand All @@ -21,7 +27,6 @@ val viewModelModule = module {
)
}


viewModel {
SettingsViewModel(
getTheme = get(),
Expand All @@ -40,17 +45,8 @@ val viewModelModule = module {
)
}

viewModel {
FavoritesViewModel(
favoritesInteractor = get()
)
}
viewModel { FavoritesViewModel(favoritesInteractor = get()) }
viewModel { CreatePlaylistViewModel(get()) }
viewModel { PlaylistsViewModel(get()) }

viewModel {
CreatePlaylistViewModel(get())
}

viewModel {
PlaylistsViewModel(get())
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.example.playlistmaker.di

import com.example.playlistmaker.media.domain.interactor.PlaylistInteractor
import com.example.playlistmaker.media.ui.MediaLibraryViewModel
import com.example.playlistmaker.media.ui.PlaylistUi
import com.example.playlistmaker.player.domain.interactor.FavoritesInteractor
import com.example.playlistmaker.search.domain.model.Track
import kotlinx.coroutines.flow.first
import org.koin.androidx.viewmodel.dsl.viewModel
import org.koin.core.qualifier.named
import org.koin.dsl.module

val mediaLibraryComposeModule = module {

single<suspend () -> List<Track>>(named("getFavoritesOnce")) {
suspend { get<FavoritesInteractor>().observeFavorites().first() }
}
Comment on lines +15 to +17

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Лучше это в юзкейс вынести, а не создавать как лямбду, так как это бизнес логика


single<suspend () -> List<PlaylistUi>>(named("getPlaylistsOnce")) {
suspend {
get<PlaylistInteractor>().observeAll().first().map { p ->
PlaylistUi(
id = p.id,
title = p.name,
trackCount = p.trackCount,
coverUrl = p.coverPath
)
}
}
}

viewModel {
MediaLibraryViewModel(
getFavoritesOnce = get(named("getFavoritesOnce")),
getPlaylistsOnce = get(named("getPlaylistsOnce")),
)
}
}

This file was deleted.

This file was deleted.

Loading