Conversation
| setForeground(getForegroundInfo()) | ||
| val url = inputData.getString("1") | ||
| Log.i("test", url!!) | ||
| val fileName = url.substring(url.lastIndexOf("/") + 1) |
There was a problem hiding this comment.
Работу с файлами в отдельный класс.
|
|
||
| private val downloadNotification: DownloadNotification = DownloadNotification(appContext) | ||
| private val baseUrl = inputData.getString("2") | ||
| private val remoteDataSourceRetrofit = RemoteDataSourceRetrofit() |
There was a problem hiding this comment.
Используй koin + Dependency Inversion
There was a problem hiding this comment.
Тут у меня не работает через koin
There was a problem hiding this comment.
Сделай, чтобы работало. https://insert-koin.io/docs/reference/koin-android/workmanager/
| startConnection() | ||
| } | ||
|
|
||
| val _isPremium = MutableStateFlow(false) |
There was a problem hiding this comment.
либо делай private, либо это одна и та же переменная
There was a problem hiding this comment.
К переменной isPremium нельзя обратиться
| interface RemoteDataSource { | ||
| suspend fun getItunesAlbums(): List<AlbumModel> | ||
|
|
||
| suspend fun getItunesTracks(@Query("albumId") albumId: Long): TracksWithAlbums |
There was a problem hiding this comment.
Эти аннотации тут не нужны. Можно разделить на itunes, library.
There was a problem hiding this comment.
Можно разделить на itunes, library. Почему нельзя сделать так, как сделано?
There was a problem hiding this comment.
Можно оставить. Но аннотации надо убрать.
| .build() | ||
|
|
||
| override suspend fun getItunesAlbums(): List<AlbumModel> { | ||
| return (retrofit.create() as MusicApi).getItunesAlbums() |
There was a problem hiding this comment.
При каждом запросе тяжёлая операция создания MusicApi.
| holder.textAlbum.text = item.name | ||
|
|
||
| holder.imageAlbum.clipToOutline = true | ||
| holder.imageAlbum.outlineProvider = object : ViewOutlineProvider() { |
| class ITunesMusicFragment : Fragment() { | ||
|
|
||
| lateinit var viewBinder: ITunesMusicFragmentBinder | ||
| private val albumsViewModel: AlbumsViewModel by inject() |
| override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | ||
| super.onViewCreated(view, savedInstanceState) | ||
|
|
||
| albumsViewModel.loadAlbums(RemoteApiType.ITUNES) |
There was a problem hiding this comment.
Обработать переворот экрана - не грузить данные при перевороте повторно
| import kotlinx.coroutines.launch | ||
| import org.koin.android.ext.android.inject | ||
|
|
||
| class LibraryMusicFragment : Fragment() { |
There was a problem hiding this comment.
Надо выносить в общий фрагмент или можно оставить все так, как есть?
| holder.imageTrack.clipToOutline = true | ||
| holder.imageTrack.outlineProvider = object: ViewOutlineProvider() { | ||
| override fun getOutline(p0: View, p1: Outline) { | ||
| p1.setRoundRect(0, 0, p0.width, p0.height, 8.0F) |
|
|
||
| val _isPremium = MutableStateFlow(false) | ||
| override val isPremium: StateFlow<Boolean> = _isPremium | ||
| override var isPremium: StateFlow<Boolean> = _isPremium |
| holder.imageAlbum.outlineProvider = object : ViewOutlineProvider() { | ||
| holder.imageAlbum.apply { | ||
| load(item.image) | ||
| outlineProvider = object : ViewOutlineProvider() { |
There was a problem hiding this comment.
дублирование кода -переноси в общие функции.
| return TracksViewHolder(view) | ||
| } | ||
|
|
||
| private fun dpToPx(dp: Int): Float = dp * Resources.getSystem().displayMetrics.density |
No description provided.