Перевод
Мелкие шайтанские фокусы
This commit is contained in:
2
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
2
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
@@ -59,7 +59,7 @@ body:
|
||||
If your bug includes a crash, please use `adb logcat` or other ways to provide logs.
|
||||
|
||||
- type: input
|
||||
id: vimusic-version
|
||||
id: muza-version
|
||||
attributes:
|
||||
label: ViMusic version
|
||||
placeholder: |
|
||||
|
||||
@@ -8,7 +8,7 @@ android {
|
||||
compileSdk = 33
|
||||
|
||||
defaultConfig {
|
||||
applicationId = "it.vfsfitvnm.vimusic"
|
||||
applicationId = "it.hamy.muza"
|
||||
minSdk = 21
|
||||
targetSdk = 33
|
||||
versionCode = 20
|
||||
@@ -22,7 +22,7 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
namespace = "it.vfsfitvnm.vimusic"
|
||||
namespace = "it.hamy.muza"
|
||||
|
||||
buildTypes {
|
||||
debug {
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic
|
||||
package it.hamy.muza
|
||||
|
||||
import android.content.ContentValues
|
||||
import android.content.Context
|
||||
@@ -31,28 +31,28 @@ import androidx.room.migration.Migration
|
||||
import androidx.sqlite.db.SimpleSQLiteQuery
|
||||
import androidx.sqlite.db.SupportSQLiteDatabase
|
||||
import androidx.sqlite.db.SupportSQLiteQuery
|
||||
import it.vfsfitvnm.vimusic.enums.AlbumSortBy
|
||||
import it.vfsfitvnm.vimusic.enums.ArtistSortBy
|
||||
import it.vfsfitvnm.vimusic.enums.PlaylistSortBy
|
||||
import it.vfsfitvnm.vimusic.enums.SongSortBy
|
||||
import it.vfsfitvnm.vimusic.enums.SortOrder
|
||||
import it.vfsfitvnm.vimusic.models.Album
|
||||
import it.vfsfitvnm.vimusic.models.Artist
|
||||
import it.vfsfitvnm.vimusic.models.SongWithContentLength
|
||||
import it.vfsfitvnm.vimusic.models.Event
|
||||
import it.vfsfitvnm.vimusic.models.Format
|
||||
import it.vfsfitvnm.vimusic.models.Info
|
||||
import it.vfsfitvnm.vimusic.models.Lyrics
|
||||
import it.vfsfitvnm.vimusic.models.Playlist
|
||||
import it.vfsfitvnm.vimusic.models.PlaylistPreview
|
||||
import it.vfsfitvnm.vimusic.models.PlaylistWithSongs
|
||||
import it.vfsfitvnm.vimusic.models.QueuedMediaItem
|
||||
import it.vfsfitvnm.vimusic.models.SearchQuery
|
||||
import it.vfsfitvnm.vimusic.models.Song
|
||||
import it.vfsfitvnm.vimusic.models.SongAlbumMap
|
||||
import it.vfsfitvnm.vimusic.models.SongArtistMap
|
||||
import it.vfsfitvnm.vimusic.models.SongPlaylistMap
|
||||
import it.vfsfitvnm.vimusic.models.SortedSongPlaylistMap
|
||||
import it.hamy.muza.enums.AlbumSortBy
|
||||
import it.hamy.muza.enums.ArtistSortBy
|
||||
import it.hamy.muza.enums.PlaylistSortBy
|
||||
import it.hamy.muza.enums.SongSortBy
|
||||
import it.hamy.muza.enums.SortOrder
|
||||
import it.hamy.muza.models.Album
|
||||
import it.hamy.muza.models.Artist
|
||||
import it.hamy.muza.models.SongWithContentLength
|
||||
import it.hamy.muza.models.Event
|
||||
import it.hamy.muza.models.Format
|
||||
import it.hamy.muza.models.Info
|
||||
import it.hamy.muza.models.Lyrics
|
||||
import it.hamy.muza.models.Playlist
|
||||
import it.hamy.muza.models.PlaylistPreview
|
||||
import it.hamy.muza.models.PlaylistWithSongs
|
||||
import it.hamy.muza.models.QueuedMediaItem
|
||||
import it.hamy.muza.models.SearchQuery
|
||||
import it.hamy.muza.models.Song
|
||||
import it.hamy.muza.models.SongAlbumMap
|
||||
import it.hamy.muza.models.SongArtistMap
|
||||
import it.hamy.muza.models.SongPlaylistMap
|
||||
import it.hamy.muza.models.SortedSongPlaylistMap
|
||||
import kotlin.jvm.Throws
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic
|
||||
package it.hamy.muza
|
||||
|
||||
import android.content.ComponentName
|
||||
import android.content.Context
|
||||
@@ -58,42 +58,42 @@ import androidx.media3.common.MediaItem
|
||||
import androidx.media3.common.Player
|
||||
import com.valentinilk.shimmer.LocalShimmerTheme
|
||||
import com.valentinilk.shimmer.defaultShimmerTheme
|
||||
import it.vfsfitvnm.compose.persist.PersistMap
|
||||
import it.vfsfitvnm.compose.persist.PersistMapOwner
|
||||
import it.vfsfitvnm.innertube.Innertube
|
||||
import it.vfsfitvnm.innertube.models.bodies.BrowseBody
|
||||
import it.vfsfitvnm.innertube.requests.playlistPage
|
||||
import it.vfsfitvnm.innertube.requests.song
|
||||
import it.vfsfitvnm.vimusic.enums.ColorPaletteMode
|
||||
import it.vfsfitvnm.vimusic.enums.ColorPaletteName
|
||||
import it.vfsfitvnm.vimusic.enums.ThumbnailRoundness
|
||||
import it.vfsfitvnm.vimusic.service.PlayerService
|
||||
import it.vfsfitvnm.vimusic.ui.components.BottomSheetMenu
|
||||
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
|
||||
import it.vfsfitvnm.vimusic.ui.components.rememberBottomSheetState
|
||||
import it.vfsfitvnm.vimusic.ui.screens.albumRoute
|
||||
import it.vfsfitvnm.vimusic.ui.screens.artistRoute
|
||||
import it.vfsfitvnm.vimusic.ui.screens.home.HomeScreen
|
||||
import it.vfsfitvnm.vimusic.ui.screens.player.Player
|
||||
import it.vfsfitvnm.vimusic.ui.screens.playlistRoute
|
||||
import it.vfsfitvnm.vimusic.ui.styling.Appearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.Dimensions
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.colorPaletteOf
|
||||
import it.vfsfitvnm.vimusic.ui.styling.dynamicColorPaletteOf
|
||||
import it.vfsfitvnm.vimusic.ui.styling.typographyOf
|
||||
import it.vfsfitvnm.vimusic.utils.applyFontPaddingKey
|
||||
import it.vfsfitvnm.vimusic.utils.asMediaItem
|
||||
import it.vfsfitvnm.vimusic.utils.colorPaletteModeKey
|
||||
import it.vfsfitvnm.vimusic.utils.colorPaletteNameKey
|
||||
import it.vfsfitvnm.vimusic.utils.forcePlay
|
||||
import it.vfsfitvnm.vimusic.utils.getEnum
|
||||
import it.vfsfitvnm.vimusic.utils.intent
|
||||
import it.vfsfitvnm.vimusic.utils.isAtLeastAndroid6
|
||||
import it.vfsfitvnm.vimusic.utils.isAtLeastAndroid8
|
||||
import it.vfsfitvnm.vimusic.utils.preferences
|
||||
import it.vfsfitvnm.vimusic.utils.thumbnailRoundnessKey
|
||||
import it.vfsfitvnm.vimusic.utils.useSystemFontKey
|
||||
import it.hamy.compose.persist.PersistMap
|
||||
import it.hamy.compose.persist.PersistMapOwner
|
||||
import it.hamy.innertube.Innertube
|
||||
import it.hamy.innertube.models.bodies.BrowseBody
|
||||
import it.hamy.innertube.requests.playlistPage
|
||||
import it.hamy.innertube.requests.song
|
||||
import it.hamy.muza.enums.ColorPaletteMode
|
||||
import it.hamy.muza.enums.ColorPaletteName
|
||||
import it.hamy.muza.enums.ThumbnailRoundness
|
||||
import it.hamy.muza.service.PlayerService
|
||||
import it.hamy.muza.ui.components.BottomSheetMenu
|
||||
import it.hamy.muza.ui.components.LocalMenuState
|
||||
import it.hamy.muza.ui.components.rememberBottomSheetState
|
||||
import it.hamy.muza.ui.screens.albumRoute
|
||||
import it.hamy.muza.ui.screens.artistRoute
|
||||
import it.hamy.muza.ui.screens.home.HomeScreen
|
||||
import it.hamy.muza.ui.screens.player.Player
|
||||
import it.hamy.muza.ui.screens.playlistRoute
|
||||
import it.hamy.muza.ui.styling.Appearance
|
||||
import it.hamy.muza.ui.styling.Dimensions
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.colorPaletteOf
|
||||
import it.hamy.muza.ui.styling.dynamicColorPaletteOf
|
||||
import it.hamy.muza.ui.styling.typographyOf
|
||||
import it.hamy.muza.utils.applyFontPaddingKey
|
||||
import it.hamy.muza.utils.asMediaItem
|
||||
import it.hamy.muza.utils.colorPaletteModeKey
|
||||
import it.hamy.muza.utils.colorPaletteNameKey
|
||||
import it.hamy.muza.utils.forcePlay
|
||||
import it.hamy.muza.utils.getEnum
|
||||
import it.hamy.muza.utils.intent
|
||||
import it.hamy.muza.utils.isAtLeastAndroid6
|
||||
import it.hamy.muza.utils.isAtLeastAndroid8
|
||||
import it.hamy.muza.utils.preferences
|
||||
import it.hamy.muza.utils.thumbnailRoundnessKey
|
||||
import it.hamy.muza.utils.useSystemFontKey
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.flow.filterNotNull
|
||||
@@ -1,13 +1,13 @@
|
||||
package it.vfsfitvnm.vimusic
|
||||
package it.hamy.muza
|
||||
|
||||
import android.app.Application
|
||||
import coil.ImageLoader
|
||||
import coil.ImageLoaderFactory
|
||||
import coil.disk.DiskCache
|
||||
import it.vfsfitvnm.vimusic.enums.CoilDiskCacheMaxSize
|
||||
import it.vfsfitvnm.vimusic.utils.coilDiskCacheMaxSizeKey
|
||||
import it.vfsfitvnm.vimusic.utils.getEnum
|
||||
import it.vfsfitvnm.vimusic.utils.preferences
|
||||
import it.hamy.muza.enums.CoilDiskCacheMaxSize
|
||||
import it.hamy.muza.utils.coilDiskCacheMaxSizeKey
|
||||
import it.hamy.muza.utils.getEnum
|
||||
import it.hamy.muza.utils.preferences
|
||||
|
||||
class MainApplication : Application(), ImageLoaderFactory {
|
||||
override fun onCreate() {
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.enums
|
||||
package it.hamy.muza.enums
|
||||
|
||||
enum class AlbumSortBy {
|
||||
Title,
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.enums
|
||||
package it.hamy.muza.enums
|
||||
|
||||
enum class ArtistSortBy {
|
||||
Name,
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.enums
|
||||
package it.hamy.muza.enums
|
||||
|
||||
enum class BuiltInPlaylist {
|
||||
Favorites,
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.enums
|
||||
package it.hamy.muza.enums
|
||||
|
||||
enum class CoilDiskCacheMaxSize {
|
||||
`128MB`,
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.enums
|
||||
package it.hamy.muza.enums
|
||||
|
||||
enum class ColorPaletteMode {
|
||||
Light,
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.enums
|
||||
package it.hamy.muza.enums
|
||||
|
||||
enum class ColorPaletteName {
|
||||
Default,
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.enums
|
||||
package it.hamy.muza.enums
|
||||
|
||||
enum class ExoPlayerDiskCacheMaxSize {
|
||||
`32MB`,
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.enums
|
||||
package it.hamy.muza.enums
|
||||
|
||||
enum class PlaylistSortBy {
|
||||
Name,
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.enums
|
||||
package it.hamy.muza.enums
|
||||
|
||||
enum class SongSortBy {
|
||||
PlayTime,
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.enums
|
||||
package it.hamy.muza.enums
|
||||
|
||||
enum class SortOrder {
|
||||
Ascending,
|
||||
@@ -1,12 +1,9 @@
|
||||
package it.vfsfitvnm.vimusic.enums
|
||||
package it.hamy.muza.enums
|
||||
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.ReadOnlyComposable
|
||||
import androidx.compose.ui.graphics.RectangleShape
|
||||
import androidx.compose.ui.graphics.Shape
|
||||
import androidx.compose.ui.unit.dp
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
|
||||
enum class ThumbnailRoundness {
|
||||
None,
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.models
|
||||
package it.hamy.muza.models
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import androidx.room.Entity
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.models
|
||||
package it.hamy.muza.models
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import androidx.room.Entity
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.models
|
||||
package it.hamy.muza.models
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import androidx.room.ColumnInfo
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.models
|
||||
package it.hamy.muza.models
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import androidx.room.Entity
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.models
|
||||
package it.hamy.muza.models
|
||||
|
||||
data class Info(
|
||||
val id: String,
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.models
|
||||
package it.hamy.muza.models
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import androidx.room.Entity
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.models
|
||||
package it.hamy.muza.models
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import androidx.room.Entity
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.models
|
||||
package it.hamy.muza.models
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import androidx.room.Embedded
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.models
|
||||
package it.hamy.muza.models
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import androidx.room.Embedded
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.models
|
||||
package it.hamy.muza.models
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import androidx.media3.common.MediaItem
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.models
|
||||
package it.hamy.muza.models
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import androidx.room.Entity
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.models
|
||||
package it.hamy.muza.models
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import androidx.room.Entity
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.models
|
||||
package it.hamy.muza.models
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import androidx.room.ColumnInfo
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.models
|
||||
package it.hamy.muza.models
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import androidx.room.ColumnInfo
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.models
|
||||
package it.hamy.muza.models
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import androidx.room.ColumnInfo
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.models
|
||||
package it.hamy.muza.models
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import androidx.room.Embedded
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.models
|
||||
package it.hamy.muza.models
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import androidx.room.ColumnInfo
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.service
|
||||
package it.hamy.muza.service
|
||||
|
||||
import android.content.Context
|
||||
import android.content.res.Configuration
|
||||
@@ -9,7 +9,7 @@ import androidx.core.graphics.applyCanvas
|
||||
import coil.imageLoader
|
||||
import coil.request.Disposable
|
||||
import coil.request.ImageRequest
|
||||
import it.vfsfitvnm.vimusic.utils.thumbnail
|
||||
import it.hamy.muza.utils.thumbnail
|
||||
|
||||
context(Context)
|
||||
class BitmapProvider(
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.service
|
||||
package it.hamy.muza.service
|
||||
|
||||
import androidx.media3.common.PlaybackException
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.service
|
||||
package it.hamy.muza.service
|
||||
|
||||
import android.media.MediaDescription as BrowserMediaDescription
|
||||
import android.media.browse.MediaBrowser.MediaItem as BrowserMediaItem
|
||||
@@ -17,17 +17,17 @@ import androidx.core.net.toUri
|
||||
import androidx.core.os.bundleOf
|
||||
import androidx.media3.common.Player
|
||||
import androidx.media3.datasource.cache.Cache
|
||||
import it.vfsfitvnm.vimusic.Database
|
||||
import it.vfsfitvnm.vimusic.R
|
||||
import it.vfsfitvnm.vimusic.models.Album
|
||||
import it.vfsfitvnm.vimusic.models.PlaylistPreview
|
||||
import it.vfsfitvnm.vimusic.models.Song
|
||||
import it.vfsfitvnm.vimusic.models.SongWithContentLength
|
||||
import it.vfsfitvnm.vimusic.utils.asMediaItem
|
||||
import it.vfsfitvnm.vimusic.utils.forcePlayAtIndex
|
||||
import it.vfsfitvnm.vimusic.utils.forceSeekToNext
|
||||
import it.vfsfitvnm.vimusic.utils.forceSeekToPrevious
|
||||
import it.vfsfitvnm.vimusic.utils.intent
|
||||
import it.hamy.muza.Database
|
||||
import it.hamy.muza.R
|
||||
import it.hamy.muza.models.Album
|
||||
import it.hamy.muza.models.PlaylistPreview
|
||||
import it.hamy.muza.models.Song
|
||||
import it.hamy.muza.models.SongWithContentLength
|
||||
import it.hamy.muza.utils.asMediaItem
|
||||
import it.hamy.muza.utils.forcePlayAtIndex
|
||||
import it.hamy.muza.utils.forceSeekToNext
|
||||
import it.hamy.muza.utils.forceSeekToPrevious
|
||||
import it.hamy.muza.utils.intent
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.first
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.service
|
||||
package it.hamy.muza.service
|
||||
|
||||
import android.os.Binder as AndroidBinder
|
||||
import android.annotation.SuppressLint
|
||||
@@ -67,45 +67,45 @@ import androidx.media3.exoplayer.source.MediaSource
|
||||
import androidx.media3.extractor.ExtractorsFactory
|
||||
import androidx.media3.extractor.mkv.MatroskaExtractor
|
||||
import androidx.media3.extractor.mp4.FragmentedMp4Extractor
|
||||
import it.vfsfitvnm.innertube.Innertube
|
||||
import it.vfsfitvnm.innertube.models.NavigationEndpoint
|
||||
import it.vfsfitvnm.innertube.models.bodies.PlayerBody
|
||||
import it.vfsfitvnm.innertube.requests.player
|
||||
import it.vfsfitvnm.vimusic.Database
|
||||
import it.vfsfitvnm.vimusic.MainActivity
|
||||
import it.vfsfitvnm.vimusic.R
|
||||
import it.vfsfitvnm.vimusic.enums.ExoPlayerDiskCacheMaxSize
|
||||
import it.vfsfitvnm.vimusic.models.Event
|
||||
import it.vfsfitvnm.vimusic.models.QueuedMediaItem
|
||||
import it.vfsfitvnm.vimusic.query
|
||||
import it.vfsfitvnm.vimusic.utils.InvincibleService
|
||||
import it.vfsfitvnm.vimusic.utils.RingBuffer
|
||||
import it.vfsfitvnm.vimusic.utils.TimerJob
|
||||
import it.vfsfitvnm.vimusic.utils.YouTubeRadio
|
||||
import it.vfsfitvnm.vimusic.utils.activityPendingIntent
|
||||
import it.vfsfitvnm.vimusic.utils.broadCastPendingIntent
|
||||
import it.vfsfitvnm.vimusic.utils.exoPlayerDiskCacheMaxSizeKey
|
||||
import it.vfsfitvnm.vimusic.utils.findNextMediaItemById
|
||||
import it.vfsfitvnm.vimusic.utils.forcePlayFromBeginning
|
||||
import it.vfsfitvnm.vimusic.utils.forceSeekToNext
|
||||
import it.vfsfitvnm.vimusic.utils.forceSeekToPrevious
|
||||
import it.vfsfitvnm.vimusic.utils.getEnum
|
||||
import it.vfsfitvnm.vimusic.utils.intent
|
||||
import it.vfsfitvnm.vimusic.utils.isAtLeastAndroid13
|
||||
import it.vfsfitvnm.vimusic.utils.isAtLeastAndroid6
|
||||
import it.vfsfitvnm.vimusic.utils.isAtLeastAndroid8
|
||||
import it.vfsfitvnm.vimusic.utils.isInvincibilityEnabledKey
|
||||
import it.vfsfitvnm.vimusic.utils.isShowingThumbnailInLockscreenKey
|
||||
import it.vfsfitvnm.vimusic.utils.mediaItems
|
||||
import it.vfsfitvnm.vimusic.utils.persistentQueueKey
|
||||
import it.vfsfitvnm.vimusic.utils.preferences
|
||||
import it.vfsfitvnm.vimusic.utils.queueLoopEnabledKey
|
||||
import it.vfsfitvnm.vimusic.utils.resumePlaybackWhenDeviceConnectedKey
|
||||
import it.vfsfitvnm.vimusic.utils.shouldBePlaying
|
||||
import it.vfsfitvnm.vimusic.utils.skipSilenceKey
|
||||
import it.vfsfitvnm.vimusic.utils.timer
|
||||
import it.vfsfitvnm.vimusic.utils.trackLoopEnabledKey
|
||||
import it.vfsfitvnm.vimusic.utils.volumeNormalizationKey
|
||||
import it.hamy.innertube.Innertube
|
||||
import it.hamy.innertube.models.NavigationEndpoint
|
||||
import it.hamy.innertube.models.bodies.PlayerBody
|
||||
import it.hamy.innertube.requests.player
|
||||
import it.hamy.muza.Database
|
||||
import it.hamy.muza.MainActivity
|
||||
import it.hamy.muza.R
|
||||
import it.hamy.muza.enums.ExoPlayerDiskCacheMaxSize
|
||||
import it.hamy.muza.models.Event
|
||||
import it.hamy.muza.models.QueuedMediaItem
|
||||
import it.hamy.muza.query
|
||||
import it.hamy.muza.utils.InvincibleService
|
||||
import it.hamy.muza.utils.RingBuffer
|
||||
import it.hamy.muza.utils.TimerJob
|
||||
import it.hamy.muza.utils.YouTubeRadio
|
||||
import it.hamy.muza.utils.activityPendingIntent
|
||||
import it.hamy.muza.utils.broadCastPendingIntent
|
||||
import it.hamy.muza.utils.exoPlayerDiskCacheMaxSizeKey
|
||||
import it.hamy.muza.utils.findNextMediaItemById
|
||||
import it.hamy.muza.utils.forcePlayFromBeginning
|
||||
import it.hamy.muza.utils.forceSeekToNext
|
||||
import it.hamy.muza.utils.forceSeekToPrevious
|
||||
import it.hamy.muza.utils.getEnum
|
||||
import it.hamy.muza.utils.intent
|
||||
import it.hamy.muza.utils.isAtLeastAndroid13
|
||||
import it.hamy.muza.utils.isAtLeastAndroid6
|
||||
import it.hamy.muza.utils.isAtLeastAndroid8
|
||||
import it.hamy.muza.utils.isInvincibilityEnabledKey
|
||||
import it.hamy.muza.utils.isShowingThumbnailInLockscreenKey
|
||||
import it.hamy.muza.utils.mediaItems
|
||||
import it.hamy.muza.utils.persistentQueueKey
|
||||
import it.hamy.muza.utils.preferences
|
||||
import it.hamy.muza.utils.queueLoopEnabledKey
|
||||
import it.hamy.muza.utils.resumePlaybackWhenDeviceConnectedKey
|
||||
import it.hamy.muza.utils.shouldBePlaying
|
||||
import it.hamy.muza.utils.skipSilenceKey
|
||||
import it.hamy.muza.utils.timer
|
||||
import it.hamy.muza.utils.trackLoopEnabledKey
|
||||
import it.hamy.muza.utils.volumeNormalizationKey
|
||||
import kotlin.math.roundToInt
|
||||
import kotlin.system.exitProcess
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
@@ -791,7 +791,7 @@ class PlayerService : InvincibleService(), Player.Listener, PlaybackStatsListene
|
||||
mediaItem?.let(Database::insert)
|
||||
|
||||
Database.insert(
|
||||
it.vfsfitvnm.vimusic.models.Format(
|
||||
it.hamy.muza.models.Format(
|
||||
songId = videoId,
|
||||
itag = format.itag,
|
||||
mimeType = format.mimeType,
|
||||
@@ -991,10 +991,10 @@ class PlayerService : InvincibleService(), Player.Listener, PlaybackStatsListene
|
||||
)
|
||||
|
||||
companion object {
|
||||
val pause = Action("it.vfsfitvnm.vimusic.pause")
|
||||
val play = Action("it.vfsfitvnm.vimusic.play")
|
||||
val next = Action("it.vfsfitvnm.vimusic.next")
|
||||
val previous = Action("it.vfsfitvnm.vimusic.previous")
|
||||
val pause = Action("it.hamy.muza.pause")
|
||||
val play = Action("it.hamy.muza.play")
|
||||
val next = Action("it.hamy.muza.next")
|
||||
val previous = Action("it.hamy.muza.previous")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components
|
||||
package it.hamy.muza.ui.components
|
||||
|
||||
import androidx.activity.compose.BackHandler
|
||||
import androidx.compose.animation.core.Animatable
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components
|
||||
package it.hamy.muza.ui.components
|
||||
|
||||
import androidx.activity.compose.BackHandler
|
||||
import androidx.compose.animation.AnimatedVisibility
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components
|
||||
package it.hamy.muza.ui.components
|
||||
|
||||
import androidx.compose.animation.core.Animatable
|
||||
import androidx.compose.foundation.Canvas
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components
|
||||
package it.hamy.muza.ui.components
|
||||
|
||||
import androidx.compose.animation.core.MutableTransitionState
|
||||
import androidx.compose.animation.core.animateDp
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components
|
||||
package it.hamy.muza.ui.components
|
||||
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Column
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components.themed
|
||||
package it.hamy.muza.ui.components.themed
|
||||
|
||||
import androidx.compose.animation.core.tween
|
||||
import androidx.compose.animation.fadeIn
|
||||
@@ -48,12 +48,12 @@ import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.window.Dialog
|
||||
import androidx.compose.ui.window.DialogProperties
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.utils.center
|
||||
import it.vfsfitvnm.vimusic.utils.drawCircle
|
||||
import it.vfsfitvnm.vimusic.utils.medium
|
||||
import it.vfsfitvnm.vimusic.utils.secondary
|
||||
import it.vfsfitvnm.vimusic.utils.semiBold
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.utils.center
|
||||
import it.hamy.muza.utils.drawCircle
|
||||
import it.hamy.muza.utils.medium
|
||||
import it.hamy.muza.utils.secondary
|
||||
import it.hamy.muza.utils.semiBold
|
||||
import kotlinx.coroutines.delay
|
||||
|
||||
@Composable
|
||||
@@ -62,8 +62,8 @@ fun TextFieldDialog(
|
||||
onDismiss: () -> Unit,
|
||||
onDone: (String) -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
cancelText: String = "Cancel",
|
||||
doneText: String = "Done",
|
||||
cancelText: String = "Отмена",
|
||||
doneText: String = "Готово",
|
||||
initialTextInput: String = "",
|
||||
singleLine: Boolean = true,
|
||||
maxLines: Int = 1,
|
||||
@@ -167,8 +167,8 @@ fun ConfirmationDialog(
|
||||
onDismiss: () -> Unit,
|
||||
onConfirm: () -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
cancelText: String = "Cancel",
|
||||
confirmText: String = "Confirm",
|
||||
cancelText: String = "Отменить",
|
||||
confirmText: String = "Продолжить",
|
||||
onCancel: () -> Unit = onDismiss
|
||||
) {
|
||||
val (_, typography) = LocalAppearance.current
|
||||
@@ -324,7 +324,7 @@ inline fun <T> ValueSelectorDialog(
|
||||
.padding(end = 24.dp)
|
||||
) {
|
||||
DialogTextButton(
|
||||
text = "Cancel",
|
||||
text = "Отмена",
|
||||
onClick = onDismiss,
|
||||
modifier = Modifier
|
||||
)
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components.themed
|
||||
package it.hamy.muza.ui.components.themed
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
@@ -10,9 +10,9 @@ import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.unit.dp
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.utils.color
|
||||
import it.vfsfitvnm.vimusic.utils.medium
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.utils.color
|
||||
import it.hamy.muza.utils.medium
|
||||
|
||||
@Composable
|
||||
fun DialogTextButton(
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components.themed
|
||||
package it.hamy.muza.ui.components.themed
|
||||
|
||||
import androidx.compose.animation.AnimatedVisibility
|
||||
import androidx.compose.animation.ExperimentalAnimationApi
|
||||
@@ -24,11 +24,11 @@ import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.unit.dp
|
||||
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets
|
||||
import it.vfsfitvnm.vimusic.R
|
||||
import it.vfsfitvnm.vimusic.utils.ScrollingInfo
|
||||
import it.vfsfitvnm.vimusic.utils.scrollingInfo
|
||||
import it.vfsfitvnm.vimusic.utils.smoothScrollToTop
|
||||
import it.hamy.muza.LocalPlayerAwareWindowInsets
|
||||
import it.hamy.muza.R
|
||||
import it.hamy.muza.utils.ScrollingInfo
|
||||
import it.hamy.muza.utils.scrollingInfo
|
||||
import it.hamy.muza.utils.smoothScrollToTop
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@ExperimentalAnimationApi
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components.themed
|
||||
package it.hamy.muza.ui.components.themed
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
@@ -16,10 +16,10 @@ import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import it.vfsfitvnm.vimusic.ui.styling.Dimensions
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.shimmer
|
||||
import it.vfsfitvnm.vimusic.utils.medium
|
||||
import it.hamy.muza.ui.styling.Dimensions
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.shimmer
|
||||
import it.hamy.muza.utils.medium
|
||||
import kotlin.random.Random
|
||||
|
||||
@Composable
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components.themed
|
||||
package it.hamy.muza.ui.components.themed
|
||||
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.compose.foundation.Image
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components.themed
|
||||
package it.hamy.muza.ui.components.themed
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.BoxWithConstraints
|
||||
@@ -14,11 +14,11 @@ import androidx.compose.ui.graphics.Shape
|
||||
import androidx.compose.ui.unit.dp
|
||||
import coil.compose.AsyncImage
|
||||
import com.valentinilk.shimmer.shimmer
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.px
|
||||
import it.vfsfitvnm.vimusic.ui.styling.shimmer
|
||||
import it.vfsfitvnm.vimusic.utils.isLandscape
|
||||
import it.vfsfitvnm.vimusic.utils.thumbnail
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.px
|
||||
import it.hamy.muza.ui.styling.shimmer
|
||||
import it.hamy.muza.utils.isLandscape
|
||||
import it.hamy.muza.utils.thumbnail
|
||||
|
||||
@Composable
|
||||
inline fun LayoutWithAdaptiveThumbnail(
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components.themed
|
||||
package it.hamy.muza.ui.components.themed
|
||||
|
||||
import android.content.Intent
|
||||
import androidx.activity.compose.BackHandler
|
||||
@@ -43,34 +43,33 @@ import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.unit.IntOffset
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.media3.common.MediaItem
|
||||
import it.vfsfitvnm.innertube.models.NavigationEndpoint
|
||||
import it.vfsfitvnm.vimusic.Database
|
||||
import it.vfsfitvnm.vimusic.LocalPlayerServiceBinder
|
||||
import it.vfsfitvnm.vimusic.R
|
||||
import it.vfsfitvnm.vimusic.enums.PlaylistSortBy
|
||||
import it.vfsfitvnm.vimusic.enums.SortOrder
|
||||
import it.vfsfitvnm.vimusic.models.Info
|
||||
import it.vfsfitvnm.vimusic.models.Playlist
|
||||
import it.vfsfitvnm.vimusic.models.Song
|
||||
import it.vfsfitvnm.vimusic.models.SongPlaylistMap
|
||||
import it.vfsfitvnm.vimusic.query
|
||||
import it.vfsfitvnm.vimusic.transaction
|
||||
import it.vfsfitvnm.vimusic.ui.items.SongItem
|
||||
import it.vfsfitvnm.vimusic.ui.screens.albumRoute
|
||||
import it.vfsfitvnm.vimusic.ui.screens.artistRoute
|
||||
import it.vfsfitvnm.vimusic.ui.styling.Dimensions
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.favoritesIcon
|
||||
import it.vfsfitvnm.vimusic.ui.styling.px
|
||||
import it.vfsfitvnm.vimusic.utils.addNext
|
||||
import it.vfsfitvnm.vimusic.utils.asMediaItem
|
||||
import it.vfsfitvnm.vimusic.utils.enqueue
|
||||
import it.vfsfitvnm.vimusic.utils.forcePlay
|
||||
import it.vfsfitvnm.vimusic.utils.formatAsDuration
|
||||
import it.vfsfitvnm.vimusic.utils.medium
|
||||
import it.vfsfitvnm.vimusic.utils.semiBold
|
||||
import it.vfsfitvnm.vimusic.utils.thumbnail
|
||||
import kotlin.system.measureTimeMillis
|
||||
import it.hamy.innertube.models.NavigationEndpoint
|
||||
import it.hamy.muza.Database
|
||||
import it.hamy.muza.LocalPlayerServiceBinder
|
||||
import it.hamy.muza.R
|
||||
import it.hamy.muza.enums.PlaylistSortBy
|
||||
import it.hamy.muza.enums.SortOrder
|
||||
import it.hamy.muza.models.Info
|
||||
import it.hamy.muza.models.Playlist
|
||||
import it.hamy.muza.models.Song
|
||||
import it.hamy.muza.models.SongPlaylistMap
|
||||
import it.hamy.muza.query
|
||||
import it.hamy.muza.transaction
|
||||
import it.hamy.muza.ui.items.SongItem
|
||||
import it.hamy.muza.ui.screens.albumRoute
|
||||
import it.hamy.muza.ui.screens.artistRoute
|
||||
import it.hamy.muza.ui.styling.Dimensions
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.favoritesIcon
|
||||
import it.hamy.muza.ui.styling.px
|
||||
import it.hamy.muza.utils.addNext
|
||||
import it.hamy.muza.utils.asMediaItem
|
||||
import it.hamy.muza.utils.enqueue
|
||||
import it.hamy.muza.utils.forcePlay
|
||||
import it.hamy.muza.utils.formatAsDuration
|
||||
import it.hamy.muza.utils.medium
|
||||
import it.hamy.muza.utils.semiBold
|
||||
import it.hamy.muza.utils.thumbnail
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import kotlinx.coroutines.withContext
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components.themed
|
||||
package it.hamy.muza.ui.components.themed
|
||||
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.compose.foundation.Image
|
||||
@@ -22,9 +22,9 @@ import androidx.compose.ui.draw.alpha
|
||||
import androidx.compose.ui.graphics.ColorFilter
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.utils.medium
|
||||
import it.vfsfitvnm.vimusic.utils.secondary
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.utils.medium
|
||||
import it.hamy.muza.utils.secondary
|
||||
|
||||
@Composable
|
||||
inline fun Menu(
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components.themed
|
||||
package it.hamy.muza.ui.components.themed
|
||||
|
||||
import androidx.compose.animation.animateColor
|
||||
import androidx.compose.animation.core.animateFloat
|
||||
@@ -32,13 +32,13 @@ import androidx.compose.ui.graphics.graphicsLayer
|
||||
import androidx.compose.ui.layout.layout
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets
|
||||
import it.vfsfitvnm.vimusic.ui.styling.Dimensions
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.utils.center
|
||||
import it.vfsfitvnm.vimusic.utils.color
|
||||
import it.vfsfitvnm.vimusic.utils.isLandscape
|
||||
import it.vfsfitvnm.vimusic.utils.semiBold
|
||||
import it.hamy.muza.LocalPlayerAwareWindowInsets
|
||||
import it.hamy.muza.ui.styling.Dimensions
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.utils.center
|
||||
import it.hamy.muza.utils.color
|
||||
import it.hamy.muza.utils.isLandscape
|
||||
import it.hamy.muza.utils.semiBold
|
||||
|
||||
@Composable
|
||||
inline fun NavigationRail(
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components.themed
|
||||
package it.hamy.muza.ui.components.themed
|
||||
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.compose.foundation.Image
|
||||
@@ -14,8 +14,8 @@ import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.ColorFilter
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.primaryButton
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.primaryButton
|
||||
|
||||
@Composable
|
||||
fun PrimaryButton(
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components.themed
|
||||
package it.hamy.muza.ui.components.themed
|
||||
|
||||
import androidx.compose.animation.AnimatedContent
|
||||
import androidx.compose.animation.AnimatedContentScope
|
||||
@@ -15,7 +15,7 @@ import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.unit.IntOffset
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
|
||||
@ExperimentalAnimationApi
|
||||
@Composable
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components.themed
|
||||
package it.hamy.muza.ui.components.themed
|
||||
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.compose.foundation.Image
|
||||
@@ -14,8 +14,8 @@ import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.ColorFilter
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.primaryButton
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.primaryButton
|
||||
|
||||
@Composable
|
||||
fun SecondaryButton(
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components.themed
|
||||
package it.hamy.muza.ui.components.themed
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
@@ -9,9 +9,9 @@ import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.unit.dp
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.primaryButton
|
||||
import it.vfsfitvnm.vimusic.utils.medium
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.primaryButton
|
||||
import it.hamy.muza.utils.medium
|
||||
|
||||
@Composable
|
||||
fun SecondaryTextButton(
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components.themed
|
||||
package it.hamy.muza.ui.components.themed
|
||||
|
||||
import androidx.compose.animation.animateColor
|
||||
import androidx.compose.animation.core.animateDp
|
||||
@@ -14,8 +14,8 @@ import androidx.compose.ui.geometry.center
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.Shadow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.utils.drawCircle
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.utils.drawCircle
|
||||
|
||||
@Composable
|
||||
fun Switch(
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.components.themed
|
||||
package it.hamy.muza.ui.components.themed
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
@@ -10,8 +10,8 @@ import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.unit.dp
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.shimmer
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.shimmer
|
||||
import kotlin.random.Random
|
||||
|
||||
@Composable
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.items
|
||||
package it.hamy.muza.ui.items
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
@@ -13,14 +13,14 @@ import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.dp
|
||||
import coil.compose.AsyncImage
|
||||
import it.vfsfitvnm.vimusic.models.Album
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.TextPlaceholder
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.shimmer
|
||||
import it.vfsfitvnm.vimusic.utils.secondary
|
||||
import it.vfsfitvnm.vimusic.utils.semiBold
|
||||
import it.vfsfitvnm.vimusic.utils.thumbnail
|
||||
import it.vfsfitvnm.innertube.Innertube
|
||||
import it.hamy.muza.models.Album
|
||||
import it.hamy.muza.ui.components.themed.TextPlaceholder
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.shimmer
|
||||
import it.hamy.muza.utils.secondary
|
||||
import it.hamy.muza.utils.semiBold
|
||||
import it.hamy.muza.utils.thumbnail
|
||||
import it.hamy.innertube.Innertube
|
||||
|
||||
@Composable
|
||||
fun AlbumItem(
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.items
|
||||
package it.hamy.muza.ui.items
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
@@ -15,14 +15,14 @@ import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.dp
|
||||
import coil.compose.AsyncImage
|
||||
import it.vfsfitvnm.vimusic.models.Artist
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.TextPlaceholder
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.shimmer
|
||||
import it.vfsfitvnm.vimusic.utils.secondary
|
||||
import it.vfsfitvnm.vimusic.utils.semiBold
|
||||
import it.vfsfitvnm.vimusic.utils.thumbnail
|
||||
import it.vfsfitvnm.innertube.Innertube
|
||||
import it.hamy.muza.models.Artist
|
||||
import it.hamy.muza.ui.components.themed.TextPlaceholder
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.shimmer
|
||||
import it.hamy.muza.utils.secondary
|
||||
import it.hamy.muza.utils.semiBold
|
||||
import it.hamy.muza.utils.thumbnail
|
||||
import it.hamy.innertube.Innertube
|
||||
|
||||
@Composable
|
||||
fun ArtistItem(
|
||||
@@ -1,10 +1,9 @@
|
||||
package it.vfsfitvnm.vimusic.ui.items
|
||||
package it.hamy.muza.ui.items
|
||||
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.ColumnScope
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.RowScope
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.width
|
||||
@@ -13,7 +12,7 @@ import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.dp
|
||||
import it.vfsfitvnm.vimusic.ui.styling.Dimensions
|
||||
import it.hamy.muza.ui.styling.Dimensions
|
||||
|
||||
@Composable
|
||||
inline fun ItemContainer(
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.items
|
||||
package it.hamy.muza.ui.items
|
||||
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.compose.foundation.Image
|
||||
@@ -27,19 +27,19 @@ import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.dp
|
||||
import coil.compose.AsyncImage
|
||||
import it.vfsfitvnm.vimusic.Database
|
||||
import it.vfsfitvnm.vimusic.models.PlaylistPreview
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.TextPlaceholder
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.onOverlay
|
||||
import it.vfsfitvnm.vimusic.ui.styling.overlay
|
||||
import it.vfsfitvnm.vimusic.ui.styling.shimmer
|
||||
import it.vfsfitvnm.vimusic.utils.color
|
||||
import it.vfsfitvnm.vimusic.utils.medium
|
||||
import it.vfsfitvnm.vimusic.utils.secondary
|
||||
import it.vfsfitvnm.vimusic.utils.semiBold
|
||||
import it.vfsfitvnm.vimusic.utils.thumbnail
|
||||
import it.vfsfitvnm.innertube.Innertube
|
||||
import it.hamy.muza.Database
|
||||
import it.hamy.muza.models.PlaylistPreview
|
||||
import it.hamy.muza.ui.components.themed.TextPlaceholder
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.onOverlay
|
||||
import it.hamy.muza.ui.styling.overlay
|
||||
import it.hamy.muza.ui.styling.shimmer
|
||||
import it.hamy.muza.utils.color
|
||||
import it.hamy.muza.utils.medium
|
||||
import it.hamy.muza.utils.secondary
|
||||
import it.hamy.muza.utils.semiBold
|
||||
import it.hamy.muza.utils.thumbnail
|
||||
import it.hamy.innertube.Innertube
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.map
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.items
|
||||
package it.hamy.muza.ui.items
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Box
|
||||
@@ -19,15 +19,15 @@ import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.media3.common.MediaItem
|
||||
import coil.compose.AsyncImage
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.TextPlaceholder
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.shimmer
|
||||
import it.vfsfitvnm.vimusic.utils.medium
|
||||
import it.vfsfitvnm.vimusic.utils.secondary
|
||||
import it.vfsfitvnm.vimusic.utils.semiBold
|
||||
import it.vfsfitvnm.vimusic.utils.thumbnail
|
||||
import it.vfsfitvnm.innertube.Innertube
|
||||
import it.vfsfitvnm.vimusic.models.Song
|
||||
import it.hamy.muza.ui.components.themed.TextPlaceholder
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.shimmer
|
||||
import it.hamy.muza.utils.medium
|
||||
import it.hamy.muza.utils.secondary
|
||||
import it.hamy.muza.utils.semiBold
|
||||
import it.hamy.muza.utils.thumbnail
|
||||
import it.hamy.innertube.Innertube
|
||||
import it.hamy.muza.models.Song
|
||||
|
||||
@Composable
|
||||
fun SongItem(
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.items
|
||||
package it.hamy.muza.ui.items
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Box
|
||||
@@ -16,16 +16,16 @@ import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.dp
|
||||
import coil.compose.AsyncImage
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.TextPlaceholder
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.onOverlay
|
||||
import it.vfsfitvnm.vimusic.ui.styling.overlay
|
||||
import it.vfsfitvnm.vimusic.ui.styling.shimmer
|
||||
import it.vfsfitvnm.vimusic.utils.color
|
||||
import it.vfsfitvnm.vimusic.utils.medium
|
||||
import it.vfsfitvnm.vimusic.utils.secondary
|
||||
import it.vfsfitvnm.vimusic.utils.semiBold
|
||||
import it.vfsfitvnm.innertube.Innertube
|
||||
import it.hamy.muza.ui.components.themed.TextPlaceholder
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.onOverlay
|
||||
import it.hamy.muza.ui.styling.overlay
|
||||
import it.hamy.muza.ui.styling.shimmer
|
||||
import it.hamy.muza.utils.color
|
||||
import it.hamy.muza.utils.medium
|
||||
import it.hamy.muza.utils.secondary
|
||||
import it.hamy.muza.utils.semiBold
|
||||
import it.hamy.innertube.Innertube
|
||||
|
||||
@Composable
|
||||
fun VideoItem(
|
||||
@@ -1,16 +1,16 @@
|
||||
package it.vfsfitvnm.vimusic.ui.screens
|
||||
package it.hamy.muza.ui.screens
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import androidx.compose.animation.ExperimentalAnimationApi
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
import androidx.compose.runtime.Composable
|
||||
import it.vfsfitvnm.compose.routing.Route0
|
||||
import it.vfsfitvnm.compose.routing.Route1
|
||||
import it.vfsfitvnm.compose.routing.RouteHandlerScope
|
||||
import it.vfsfitvnm.vimusic.enums.BuiltInPlaylist
|
||||
import it.vfsfitvnm.vimusic.ui.screens.album.AlbumScreen
|
||||
import it.vfsfitvnm.vimusic.ui.screens.artist.ArtistScreen
|
||||
import it.vfsfitvnm.vimusic.ui.screens.playlist.PlaylistScreen
|
||||
import it.hamy.compose.routing.Route0
|
||||
import it.hamy.compose.routing.Route1
|
||||
import it.hamy.compose.routing.RouteHandlerScope
|
||||
import it.hamy.muza.enums.BuiltInPlaylist
|
||||
import it.hamy.muza.ui.screens.album.AlbumScreen
|
||||
import it.hamy.muza.ui.screens.artist.ArtistScreen
|
||||
import it.hamy.muza.ui.screens.playlist.PlaylistScreen
|
||||
|
||||
val albumRoute = Route1<String?>("albumRoute")
|
||||
val artistRoute = Route1<String?>("artistRoute")
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.screens.album
|
||||
package it.hamy.muza.ui.screens.album
|
||||
|
||||
import android.content.Intent
|
||||
import androidx.compose.animation.ExperimentalAnimationApi
|
||||
@@ -17,30 +17,30 @@ import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.valentinilk.shimmer.shimmer
|
||||
import it.vfsfitvnm.compose.persist.PersistMapCleanup
|
||||
import it.vfsfitvnm.compose.persist.persist
|
||||
import it.vfsfitvnm.innertube.Innertube
|
||||
import it.vfsfitvnm.innertube.models.bodies.BrowseBody
|
||||
import it.vfsfitvnm.innertube.requests.albumPage
|
||||
import it.vfsfitvnm.compose.routing.RouteHandler
|
||||
import it.vfsfitvnm.vimusic.Database
|
||||
import it.vfsfitvnm.vimusic.R
|
||||
import it.vfsfitvnm.vimusic.models.Album
|
||||
import it.vfsfitvnm.vimusic.models.SongAlbumMap
|
||||
import it.vfsfitvnm.vimusic.query
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.Header
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.HeaderIconButton
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.HeaderPlaceholder
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.Scaffold
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.adaptiveThumbnailContent
|
||||
import it.vfsfitvnm.vimusic.ui.items.AlbumItem
|
||||
import it.vfsfitvnm.vimusic.ui.items.AlbumItemPlaceholder
|
||||
import it.vfsfitvnm.vimusic.ui.screens.albumRoute
|
||||
import it.vfsfitvnm.vimusic.ui.screens.globalRoutes
|
||||
import it.vfsfitvnm.vimusic.ui.screens.searchresult.ItemsPage
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.px
|
||||
import it.vfsfitvnm.vimusic.utils.asMediaItem
|
||||
import it.hamy.compose.persist.PersistMapCleanup
|
||||
import it.hamy.compose.persist.persist
|
||||
import it.hamy.innertube.Innertube
|
||||
import it.hamy.innertube.models.bodies.BrowseBody
|
||||
import it.hamy.innertube.requests.albumPage
|
||||
import it.hamy.compose.routing.RouteHandler
|
||||
import it.hamy.muza.Database
|
||||
import it.hamy.muza.R
|
||||
import it.hamy.muza.models.Album
|
||||
import it.hamy.muza.models.SongAlbumMap
|
||||
import it.hamy.muza.query
|
||||
import it.hamy.muza.ui.components.themed.Header
|
||||
import it.hamy.muza.ui.components.themed.HeaderIconButton
|
||||
import it.hamy.muza.ui.components.themed.HeaderPlaceholder
|
||||
import it.hamy.muza.ui.components.themed.Scaffold
|
||||
import it.hamy.muza.ui.components.themed.adaptiveThumbnailContent
|
||||
import it.hamy.muza.ui.items.AlbumItem
|
||||
import it.hamy.muza.ui.items.AlbumItemPlaceholder
|
||||
import it.hamy.muza.ui.screens.albumRoute
|
||||
import it.hamy.muza.ui.screens.globalRoutes
|
||||
import it.hamy.muza.ui.screens.searchresult.ItemsPage
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.px
|
||||
import it.hamy.muza.utils.asMediaItem
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.combine
|
||||
import kotlinx.coroutines.withContext
|
||||
@@ -122,7 +122,7 @@ fun AlbumScreen(browseId: String) {
|
||||
val (colorPalette) = LocalAppearance.current
|
||||
val context = LocalContext.current
|
||||
|
||||
Header(title = album?.title ?: "Unknown") {
|
||||
Header(title = album?.title ?: "Неизвестный") {
|
||||
textButton?.invoke()
|
||||
|
||||
Spacer(
|
||||
@@ -182,8 +182,8 @@ fun AlbumScreen(browseId: String) {
|
||||
tabIndex = tabIndex,
|
||||
onTabChanged = { tabIndex = it },
|
||||
tabColumnContent = { Item ->
|
||||
Item(0, "Songs", R.drawable.musical_notes)
|
||||
Item(1, "Other versions", R.drawable.disc)
|
||||
Item(0, "Песни", R.drawable.musical_notes)
|
||||
Item(1, "Другие версии", R.drawable.disc)
|
||||
}
|
||||
) { currentTabIndex ->
|
||||
saveableStateHolder.SaveableStateProvider(key = currentTabIndex) {
|
||||
@@ -203,7 +203,7 @@ fun AlbumScreen(browseId: String) {
|
||||
headerContent = headerContent,
|
||||
initialPlaceholderCount = 1,
|
||||
continuationPlaceholderCount = 1,
|
||||
emptyItemsText = "This album doesn't have any alternative version",
|
||||
emptyItemsText = "Этот альбом не имеет других версий",
|
||||
itemsPageProvider = albumPage?.let {
|
||||
({
|
||||
Result.success(
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.screens.album
|
||||
package it.hamy.muza.ui.screens.album
|
||||
|
||||
import androidx.compose.animation.ExperimentalAnimationApi
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
@@ -22,30 +22,30 @@ import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import it.vfsfitvnm.compose.persist.persistList
|
||||
import it.vfsfitvnm.vimusic.Database
|
||||
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets
|
||||
import it.vfsfitvnm.vimusic.LocalPlayerServiceBinder
|
||||
import it.vfsfitvnm.vimusic.R
|
||||
import it.vfsfitvnm.vimusic.models.Song
|
||||
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
|
||||
import it.vfsfitvnm.vimusic.ui.components.ShimmerHost
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.FloatingActionsContainerWithScrollToTop
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.LayoutWithAdaptiveThumbnail
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.NonQueuedMediaItemMenu
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.SecondaryTextButton
|
||||
import it.vfsfitvnm.vimusic.ui.items.SongItem
|
||||
import it.vfsfitvnm.vimusic.ui.items.SongItemPlaceholder
|
||||
import it.vfsfitvnm.vimusic.ui.styling.Dimensions
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.utils.asMediaItem
|
||||
import it.vfsfitvnm.vimusic.utils.center
|
||||
import it.vfsfitvnm.vimusic.utils.color
|
||||
import it.vfsfitvnm.vimusic.utils.enqueue
|
||||
import it.vfsfitvnm.vimusic.utils.forcePlayAtIndex
|
||||
import it.vfsfitvnm.vimusic.utils.forcePlayFromBeginning
|
||||
import it.vfsfitvnm.vimusic.utils.isLandscape
|
||||
import it.vfsfitvnm.vimusic.utils.semiBold
|
||||
import it.hamy.compose.persist.persistList
|
||||
import it.hamy.muza.Database
|
||||
import it.hamy.muza.LocalPlayerAwareWindowInsets
|
||||
import it.hamy.muza.LocalPlayerServiceBinder
|
||||
import it.hamy.muza.R
|
||||
import it.hamy.muza.models.Song
|
||||
import it.hamy.muza.ui.components.LocalMenuState
|
||||
import it.hamy.muza.ui.components.ShimmerHost
|
||||
import it.hamy.muza.ui.components.themed.FloatingActionsContainerWithScrollToTop
|
||||
import it.hamy.muza.ui.components.themed.LayoutWithAdaptiveThumbnail
|
||||
import it.hamy.muza.ui.components.themed.NonQueuedMediaItemMenu
|
||||
import it.hamy.muza.ui.components.themed.SecondaryTextButton
|
||||
import it.hamy.muza.ui.items.SongItem
|
||||
import it.hamy.muza.ui.items.SongItemPlaceholder
|
||||
import it.hamy.muza.ui.styling.Dimensions
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.utils.asMediaItem
|
||||
import it.hamy.muza.utils.center
|
||||
import it.hamy.muza.utils.color
|
||||
import it.hamy.muza.utils.enqueue
|
||||
import it.hamy.muza.utils.forcePlayAtIndex
|
||||
import it.hamy.muza.utils.forcePlayFromBeginning
|
||||
import it.hamy.muza.utils.isLandscape
|
||||
import it.hamy.muza.utils.semiBold
|
||||
|
||||
@ExperimentalAnimationApi
|
||||
@ExperimentalFoundationApi
|
||||
@@ -86,7 +86,7 @@ fun AlbumSongs(
|
||||
Column(horizontalAlignment = Alignment.CenterHorizontally) {
|
||||
headerContent {
|
||||
SecondaryTextButton(
|
||||
text = "Enqueue",
|
||||
text = "В очередь",
|
||||
enabled = songs.isNotEmpty(),
|
||||
onClick = {
|
||||
binder?.player?.enqueue(songs.map(Song::asMediaItem))
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.screens.artist
|
||||
package it.hamy.muza.ui.screens.artist
|
||||
|
||||
import androidx.compose.animation.ExperimentalAnimationApi
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
@@ -19,27 +19,27 @@ import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import it.vfsfitvnm.compose.persist.persist
|
||||
import it.vfsfitvnm.vimusic.Database
|
||||
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets
|
||||
import it.vfsfitvnm.vimusic.LocalPlayerServiceBinder
|
||||
import it.vfsfitvnm.vimusic.R
|
||||
import it.vfsfitvnm.vimusic.models.Song
|
||||
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
|
||||
import it.vfsfitvnm.vimusic.ui.components.ShimmerHost
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.FloatingActionsContainerWithScrollToTop
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.LayoutWithAdaptiveThumbnail
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.NonQueuedMediaItemMenu
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.SecondaryTextButton
|
||||
import it.vfsfitvnm.vimusic.ui.items.SongItem
|
||||
import it.vfsfitvnm.vimusic.ui.items.SongItemPlaceholder
|
||||
import it.vfsfitvnm.vimusic.ui.styling.Dimensions
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.px
|
||||
import it.vfsfitvnm.vimusic.utils.asMediaItem
|
||||
import it.vfsfitvnm.vimusic.utils.enqueue
|
||||
import it.vfsfitvnm.vimusic.utils.forcePlayAtIndex
|
||||
import it.vfsfitvnm.vimusic.utils.forcePlayFromBeginning
|
||||
import it.hamy.compose.persist.persist
|
||||
import it.hamy.muza.Database
|
||||
import it.hamy.muza.LocalPlayerAwareWindowInsets
|
||||
import it.hamy.muza.LocalPlayerServiceBinder
|
||||
import it.hamy.muza.R
|
||||
import it.hamy.muza.models.Song
|
||||
import it.hamy.muza.ui.components.LocalMenuState
|
||||
import it.hamy.muza.ui.components.ShimmerHost
|
||||
import it.hamy.muza.ui.components.themed.FloatingActionsContainerWithScrollToTop
|
||||
import it.hamy.muza.ui.components.themed.LayoutWithAdaptiveThumbnail
|
||||
import it.hamy.muza.ui.components.themed.NonQueuedMediaItemMenu
|
||||
import it.hamy.muza.ui.components.themed.SecondaryTextButton
|
||||
import it.hamy.muza.ui.items.SongItem
|
||||
import it.hamy.muza.ui.items.SongItemPlaceholder
|
||||
import it.hamy.muza.ui.styling.Dimensions
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.px
|
||||
import it.hamy.muza.utils.asMediaItem
|
||||
import it.hamy.muza.utils.enqueue
|
||||
import it.hamy.muza.utils.forcePlayAtIndex
|
||||
import it.hamy.muza.utils.forcePlayFromBeginning
|
||||
|
||||
@ExperimentalFoundationApi
|
||||
@ExperimentalAnimationApi
|
||||
@@ -81,7 +81,7 @@ fun ArtistLocalSongs(
|
||||
Column(horizontalAlignment = Alignment.CenterHorizontally) {
|
||||
headerContent {
|
||||
SecondaryTextButton(
|
||||
text = "Enqueue",
|
||||
text = "В очередь",
|
||||
enabled = !songs.isNullOrEmpty(),
|
||||
onClick = {
|
||||
binder?.player?.enqueue(songs!!.map(Song::asMediaItem))
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.screens.artist
|
||||
package it.hamy.muza.ui.screens.artist
|
||||
|
||||
import androidx.compose.animation.ExperimentalAnimationApi
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
@@ -26,31 +26,31 @@ import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import it.vfsfitvnm.innertube.Innertube
|
||||
import it.vfsfitvnm.innertube.models.NavigationEndpoint
|
||||
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets
|
||||
import it.vfsfitvnm.vimusic.LocalPlayerServiceBinder
|
||||
import it.vfsfitvnm.vimusic.R
|
||||
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
|
||||
import it.vfsfitvnm.vimusic.ui.components.ShimmerHost
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.FloatingActionsContainerWithScrollToTop
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.LayoutWithAdaptiveThumbnail
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.NonQueuedMediaItemMenu
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.SecondaryTextButton
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.TextPlaceholder
|
||||
import it.vfsfitvnm.vimusic.ui.items.AlbumItem
|
||||
import it.vfsfitvnm.vimusic.ui.items.AlbumItemPlaceholder
|
||||
import it.vfsfitvnm.vimusic.ui.items.SongItem
|
||||
import it.vfsfitvnm.vimusic.ui.items.SongItemPlaceholder
|
||||
import it.vfsfitvnm.vimusic.ui.styling.Dimensions
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.px
|
||||
import it.vfsfitvnm.vimusic.utils.align
|
||||
import it.vfsfitvnm.vimusic.utils.asMediaItem
|
||||
import it.vfsfitvnm.vimusic.utils.color
|
||||
import it.vfsfitvnm.vimusic.utils.forcePlay
|
||||
import it.vfsfitvnm.vimusic.utils.secondary
|
||||
import it.vfsfitvnm.vimusic.utils.semiBold
|
||||
import it.hamy.innertube.Innertube
|
||||
import it.hamy.innertube.models.NavigationEndpoint
|
||||
import it.hamy.muza.LocalPlayerAwareWindowInsets
|
||||
import it.hamy.muza.LocalPlayerServiceBinder
|
||||
import it.hamy.muza.R
|
||||
import it.hamy.muza.ui.components.LocalMenuState
|
||||
import it.hamy.muza.ui.components.ShimmerHost
|
||||
import it.hamy.muza.ui.components.themed.FloatingActionsContainerWithScrollToTop
|
||||
import it.hamy.muza.ui.components.themed.LayoutWithAdaptiveThumbnail
|
||||
import it.hamy.muza.ui.components.themed.NonQueuedMediaItemMenu
|
||||
import it.hamy.muza.ui.components.themed.SecondaryTextButton
|
||||
import it.hamy.muza.ui.components.themed.TextPlaceholder
|
||||
import it.hamy.muza.ui.items.AlbumItem
|
||||
import it.hamy.muza.ui.items.AlbumItemPlaceholder
|
||||
import it.hamy.muza.ui.items.SongItem
|
||||
import it.hamy.muza.ui.items.SongItemPlaceholder
|
||||
import it.hamy.muza.ui.styling.Dimensions
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.px
|
||||
import it.hamy.muza.utils.align
|
||||
import it.hamy.muza.utils.asMediaItem
|
||||
import it.hamy.muza.utils.color
|
||||
import it.hamy.muza.utils.forcePlay
|
||||
import it.hamy.muza.utils.secondary
|
||||
import it.hamy.muza.utils.semiBold
|
||||
|
||||
@ExperimentalFoundationApi
|
||||
@ExperimentalAnimationApi
|
||||
@@ -103,7 +103,7 @@ fun ArtistOverview(
|
||||
headerContent {
|
||||
youtubeArtistPage?.shuffleEndpoint?.let { endpoint ->
|
||||
SecondaryTextButton(
|
||||
text = "Shuffle",
|
||||
text = "Перемешать",
|
||||
onClick = {
|
||||
binder?.stopRadio()
|
||||
binder?.playRadio(endpoint)
|
||||
@@ -125,14 +125,14 @@ fun ArtistOverview(
|
||||
.padding(endPaddingValues)
|
||||
) {
|
||||
BasicText(
|
||||
text = "Songs",
|
||||
text = "Песни",
|
||||
style = typography.m.semiBold,
|
||||
modifier = sectionTextModifier
|
||||
)
|
||||
|
||||
youtubeArtistPage.songsEndpoint?.let {
|
||||
BasicText(
|
||||
text = "View all",
|
||||
text = "Все",
|
||||
style = typography.xs.secondary,
|
||||
modifier = sectionTextModifier
|
||||
.clickable(onClick = onViewAllSongsClick),
|
||||
@@ -178,14 +178,14 @@ fun ArtistOverview(
|
||||
.padding(endPaddingValues)
|
||||
) {
|
||||
BasicText(
|
||||
text = "Albums",
|
||||
text = "Альбомы",
|
||||
style = typography.m.semiBold,
|
||||
modifier = sectionTextModifier
|
||||
)
|
||||
|
||||
youtubeArtistPage.albumsEndpoint?.let {
|
||||
BasicText(
|
||||
text = "View all",
|
||||
text = "Все",
|
||||
style = typography.xs.secondary,
|
||||
modifier = sectionTextModifier
|
||||
.clickable(onClick = onViewAllAlbumsClick),
|
||||
@@ -223,14 +223,14 @@ fun ArtistOverview(
|
||||
.padding(endPaddingValues)
|
||||
) {
|
||||
BasicText(
|
||||
text = "Singles",
|
||||
text = "Синглы",
|
||||
style = typography.m.semiBold,
|
||||
modifier = sectionTextModifier
|
||||
)
|
||||
|
||||
youtubeArtistPage.singlesEndpoint?.let {
|
||||
BasicText(
|
||||
text = "View all",
|
||||
text = "Все",
|
||||
style = typography.xs.secondary,
|
||||
modifier = sectionTextModifier
|
||||
.clickable(onClick = onViewAllSinglesClick),
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.screens.artist
|
||||
package it.hamy.muza.ui.screens.artist
|
||||
|
||||
import android.content.Intent
|
||||
import androidx.compose.animation.ExperimentalAnimationApi
|
||||
@@ -17,41 +17,41 @@ import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.valentinilk.shimmer.shimmer
|
||||
import it.vfsfitvnm.compose.persist.PersistMapCleanup
|
||||
import it.vfsfitvnm.compose.persist.persist
|
||||
import it.vfsfitvnm.innertube.Innertube
|
||||
import it.vfsfitvnm.innertube.models.bodies.BrowseBody
|
||||
import it.vfsfitvnm.innertube.models.bodies.ContinuationBody
|
||||
import it.vfsfitvnm.innertube.requests.artistPage
|
||||
import it.vfsfitvnm.innertube.requests.itemsPage
|
||||
import it.vfsfitvnm.innertube.utils.from
|
||||
import it.vfsfitvnm.compose.routing.RouteHandler
|
||||
import it.vfsfitvnm.vimusic.Database
|
||||
import it.vfsfitvnm.vimusic.LocalPlayerServiceBinder
|
||||
import it.vfsfitvnm.vimusic.R
|
||||
import it.vfsfitvnm.vimusic.models.Artist
|
||||
import it.vfsfitvnm.vimusic.query
|
||||
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.Header
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.HeaderIconButton
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.HeaderPlaceholder
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.NonQueuedMediaItemMenu
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.Scaffold
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.adaptiveThumbnailContent
|
||||
import it.vfsfitvnm.vimusic.ui.items.AlbumItem
|
||||
import it.vfsfitvnm.vimusic.ui.items.AlbumItemPlaceholder
|
||||
import it.vfsfitvnm.vimusic.ui.items.SongItem
|
||||
import it.vfsfitvnm.vimusic.ui.items.SongItemPlaceholder
|
||||
import it.vfsfitvnm.vimusic.ui.screens.albumRoute
|
||||
import it.vfsfitvnm.vimusic.ui.screens.globalRoutes
|
||||
import it.vfsfitvnm.vimusic.ui.screens.searchresult.ItemsPage
|
||||
import it.vfsfitvnm.vimusic.ui.styling.Dimensions
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.px
|
||||
import it.vfsfitvnm.vimusic.utils.artistScreenTabIndexKey
|
||||
import it.vfsfitvnm.vimusic.utils.asMediaItem
|
||||
import it.vfsfitvnm.vimusic.utils.forcePlay
|
||||
import it.vfsfitvnm.vimusic.utils.rememberPreference
|
||||
import it.hamy.compose.persist.PersistMapCleanup
|
||||
import it.hamy.compose.persist.persist
|
||||
import it.hamy.innertube.Innertube
|
||||
import it.hamy.innertube.models.bodies.BrowseBody
|
||||
import it.hamy.innertube.models.bodies.ContinuationBody
|
||||
import it.hamy.innertube.requests.artistPage
|
||||
import it.hamy.innertube.requests.itemsPage
|
||||
import it.hamy.innertube.utils.from
|
||||
import it.hamy.compose.routing.RouteHandler
|
||||
import it.hamy.muza.Database
|
||||
import it.hamy.muza.LocalPlayerServiceBinder
|
||||
import it.hamy.muza.R
|
||||
import it.hamy.muza.models.Artist
|
||||
import it.hamy.muza.query
|
||||
import it.hamy.muza.ui.components.LocalMenuState
|
||||
import it.hamy.muza.ui.components.themed.Header
|
||||
import it.hamy.muza.ui.components.themed.HeaderIconButton
|
||||
import it.hamy.muza.ui.components.themed.HeaderPlaceholder
|
||||
import it.hamy.muza.ui.components.themed.NonQueuedMediaItemMenu
|
||||
import it.hamy.muza.ui.components.themed.Scaffold
|
||||
import it.hamy.muza.ui.components.themed.adaptiveThumbnailContent
|
||||
import it.hamy.muza.ui.items.AlbumItem
|
||||
import it.hamy.muza.ui.items.AlbumItemPlaceholder
|
||||
import it.hamy.muza.ui.items.SongItem
|
||||
import it.hamy.muza.ui.items.SongItemPlaceholder
|
||||
import it.hamy.muza.ui.screens.albumRoute
|
||||
import it.hamy.muza.ui.screens.globalRoutes
|
||||
import it.hamy.muza.ui.screens.searchresult.ItemsPage
|
||||
import it.hamy.muza.ui.styling.Dimensions
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.px
|
||||
import it.hamy.muza.utils.artistScreenTabIndexKey
|
||||
import it.hamy.muza.utils.asMediaItem
|
||||
import it.hamy.muza.utils.forcePlay
|
||||
import it.hamy.muza.utils.rememberPreference
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.combine
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.screens.builtinplaylist
|
||||
package it.hamy.muza.ui.screens.builtinplaylist
|
||||
|
||||
import androidx.compose.animation.ExperimentalAnimationApi
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
@@ -6,12 +6,12 @@ import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.runtime.saveable.rememberSaveableStateHolder
|
||||
import it.vfsfitvnm.compose.persist.PersistMapCleanup
|
||||
import it.vfsfitvnm.compose.routing.RouteHandler
|
||||
import it.vfsfitvnm.vimusic.R
|
||||
import it.vfsfitvnm.vimusic.enums.BuiltInPlaylist
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.Scaffold
|
||||
import it.vfsfitvnm.vimusic.ui.screens.globalRoutes
|
||||
import it.hamy.compose.persist.PersistMapCleanup
|
||||
import it.hamy.compose.routing.RouteHandler
|
||||
import it.hamy.muza.R
|
||||
import it.hamy.muza.enums.BuiltInPlaylist
|
||||
import it.hamy.muza.ui.components.themed.Scaffold
|
||||
import it.hamy.muza.ui.screens.globalRoutes
|
||||
|
||||
@ExperimentalFoundationApi
|
||||
@ExperimentalAnimationApi
|
||||
@@ -38,8 +38,8 @@ fun BuiltInPlaylistScreen(builtInPlaylist: BuiltInPlaylist) {
|
||||
tabIndex = tabIndex,
|
||||
onTabChanged = onTabIndexChanged,
|
||||
tabColumnContent = { Item ->
|
||||
Item(0, "Favorites", R.drawable.heart)
|
||||
Item(1, "Offline", R.drawable.airplane)
|
||||
Item(0, "Любимые", R.drawable.heart)
|
||||
Item(1, "Сохранённые", R.drawable.airplane)
|
||||
}
|
||||
) { currentTabIndex ->
|
||||
saveableStateHolder.SaveableStateProvider(key = currentTabIndex) {
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.screens.builtinplaylist
|
||||
package it.hamy.muza.ui.screens.builtinplaylist
|
||||
|
||||
import androidx.compose.animation.ExperimentalAnimationApi
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
@@ -20,28 +20,28 @@ import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.unit.dp
|
||||
import it.vfsfitvnm.compose.persist.persistList
|
||||
import it.vfsfitvnm.vimusic.Database
|
||||
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets
|
||||
import it.vfsfitvnm.vimusic.LocalPlayerServiceBinder
|
||||
import it.vfsfitvnm.vimusic.R
|
||||
import it.vfsfitvnm.vimusic.enums.BuiltInPlaylist
|
||||
import it.vfsfitvnm.vimusic.models.Song
|
||||
import it.vfsfitvnm.vimusic.models.SongWithContentLength
|
||||
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.FloatingActionsContainerWithScrollToTop
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.Header
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.InHistoryMediaItemMenu
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.NonQueuedMediaItemMenu
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.SecondaryTextButton
|
||||
import it.vfsfitvnm.vimusic.ui.items.SongItem
|
||||
import it.vfsfitvnm.vimusic.ui.styling.Dimensions
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.px
|
||||
import it.vfsfitvnm.vimusic.utils.asMediaItem
|
||||
import it.vfsfitvnm.vimusic.utils.enqueue
|
||||
import it.vfsfitvnm.vimusic.utils.forcePlayAtIndex
|
||||
import it.vfsfitvnm.vimusic.utils.forcePlayFromBeginning
|
||||
import it.hamy.compose.persist.persistList
|
||||
import it.hamy.muza.Database
|
||||
import it.hamy.muza.LocalPlayerAwareWindowInsets
|
||||
import it.hamy.muza.LocalPlayerServiceBinder
|
||||
import it.hamy.muza.R
|
||||
import it.hamy.muza.enums.BuiltInPlaylist
|
||||
import it.hamy.muza.models.Song
|
||||
import it.hamy.muza.models.SongWithContentLength
|
||||
import it.hamy.muza.ui.components.LocalMenuState
|
||||
import it.hamy.muza.ui.components.themed.FloatingActionsContainerWithScrollToTop
|
||||
import it.hamy.muza.ui.components.themed.Header
|
||||
import it.hamy.muza.ui.components.themed.InHistoryMediaItemMenu
|
||||
import it.hamy.muza.ui.components.themed.NonQueuedMediaItemMenu
|
||||
import it.hamy.muza.ui.components.themed.SecondaryTextButton
|
||||
import it.hamy.muza.ui.items.SongItem
|
||||
import it.hamy.muza.ui.styling.Dimensions
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.px
|
||||
import it.hamy.muza.utils.asMediaItem
|
||||
import it.hamy.muza.utils.enqueue
|
||||
import it.hamy.muza.utils.forcePlayAtIndex
|
||||
import it.hamy.muza.utils.forcePlayFromBeginning
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.flowOn
|
||||
import kotlinx.coroutines.flow.map
|
||||
@@ -94,14 +94,14 @@ fun BuiltInPlaylistSongs(builtInPlaylist: BuiltInPlaylist) {
|
||||
) {
|
||||
Header(
|
||||
title = when (builtInPlaylist) {
|
||||
BuiltInPlaylist.Favorites -> "Favorites"
|
||||
BuiltInPlaylist.Offline -> "Offline"
|
||||
BuiltInPlaylist.Favorites -> "Любимые"
|
||||
BuiltInPlaylist.Offline -> "Сохранённые"
|
||||
},
|
||||
modifier = Modifier
|
||||
.padding(bottom = 8.dp)
|
||||
) {
|
||||
SecondaryTextButton(
|
||||
text = "Enqueue",
|
||||
text = "В очередь",
|
||||
enabled = songs.isNotEmpty(),
|
||||
onClick = {
|
||||
binder?.player?.enqueue(songs.map(Song::asMediaItem))
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.screens.home
|
||||
package it.hamy.muza.ui.screens.home
|
||||
|
||||
import androidx.compose.animation.ExperimentalAnimationApi
|
||||
import androidx.compose.animation.core.LinearEasing
|
||||
@@ -15,34 +15,32 @@ import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.only
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.LazyListState
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.graphicsLayer
|
||||
import androidx.compose.ui.unit.dp
|
||||
import it.vfsfitvnm.compose.persist.persist
|
||||
import it.vfsfitvnm.vimusic.Database
|
||||
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets
|
||||
import it.vfsfitvnm.vimusic.R
|
||||
import it.vfsfitvnm.vimusic.enums.AlbumSortBy
|
||||
import it.vfsfitvnm.vimusic.enums.SortOrder
|
||||
import it.vfsfitvnm.vimusic.models.Album
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.FloatingActionsContainerWithScrollToTop
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.Header
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.HeaderIconButton
|
||||
import it.vfsfitvnm.vimusic.ui.items.AlbumItem
|
||||
import it.vfsfitvnm.vimusic.ui.styling.Dimensions
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.px
|
||||
import it.vfsfitvnm.vimusic.utils.albumSortByKey
|
||||
import it.vfsfitvnm.vimusic.utils.albumSortOrderKey
|
||||
import it.vfsfitvnm.vimusic.utils.rememberPreference
|
||||
import it.hamy.compose.persist.persist
|
||||
import it.hamy.muza.Database
|
||||
import it.hamy.muza.LocalPlayerAwareWindowInsets
|
||||
import it.hamy.muza.R
|
||||
import it.hamy.muza.enums.AlbumSortBy
|
||||
import it.hamy.muza.enums.SortOrder
|
||||
import it.hamy.muza.models.Album
|
||||
import it.hamy.muza.ui.components.themed.FloatingActionsContainerWithScrollToTop
|
||||
import it.hamy.muza.ui.components.themed.Header
|
||||
import it.hamy.muza.ui.components.themed.HeaderIconButton
|
||||
import it.hamy.muza.ui.items.AlbumItem
|
||||
import it.hamy.muza.ui.styling.Dimensions
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.px
|
||||
import it.hamy.muza.utils.albumSortByKey
|
||||
import it.hamy.muza.utils.albumSortOrderKey
|
||||
import it.hamy.muza.utils.rememberPreference
|
||||
|
||||
@ExperimentalFoundationApi
|
||||
@ExperimentalAnimationApi
|
||||
@@ -85,7 +83,7 @@ fun HomeAlbums(
|
||||
key = "header",
|
||||
contentType = 0
|
||||
) {
|
||||
Header(title = "Albums") {
|
||||
Header(title = "Альбомы") {
|
||||
HeaderIconButton(
|
||||
icon = R.drawable.calendar,
|
||||
color = if (sortBy == AlbumSortBy.Year) colorPalette.text else colorPalette.textDisabled,
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.screens.home
|
||||
package it.hamy.muza.ui.screens.home
|
||||
|
||||
import androidx.compose.animation.ExperimentalAnimationApi
|
||||
import androidx.compose.animation.core.LinearEasing
|
||||
@@ -28,23 +28,23 @@ import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.graphicsLayer
|
||||
import androidx.compose.ui.unit.dp
|
||||
import it.vfsfitvnm.compose.persist.persistList
|
||||
import it.vfsfitvnm.vimusic.Database
|
||||
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets
|
||||
import it.vfsfitvnm.vimusic.R
|
||||
import it.vfsfitvnm.vimusic.enums.ArtistSortBy
|
||||
import it.vfsfitvnm.vimusic.enums.SortOrder
|
||||
import it.vfsfitvnm.vimusic.models.Artist
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.FloatingActionsContainerWithScrollToTop
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.Header
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.HeaderIconButton
|
||||
import it.vfsfitvnm.vimusic.ui.items.ArtistItem
|
||||
import it.vfsfitvnm.vimusic.ui.styling.Dimensions
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.px
|
||||
import it.vfsfitvnm.vimusic.utils.artistSortByKey
|
||||
import it.vfsfitvnm.vimusic.utils.artistSortOrderKey
|
||||
import it.vfsfitvnm.vimusic.utils.rememberPreference
|
||||
import it.hamy.compose.persist.persistList
|
||||
import it.hamy.muza.Database
|
||||
import it.hamy.muza.LocalPlayerAwareWindowInsets
|
||||
import it.hamy.muza.R
|
||||
import it.hamy.muza.enums.ArtistSortBy
|
||||
import it.hamy.muza.enums.SortOrder
|
||||
import it.hamy.muza.models.Artist
|
||||
import it.hamy.muza.ui.components.themed.FloatingActionsContainerWithScrollToTop
|
||||
import it.hamy.muza.ui.components.themed.Header
|
||||
import it.hamy.muza.ui.components.themed.HeaderIconButton
|
||||
import it.hamy.muza.ui.items.ArtistItem
|
||||
import it.hamy.muza.ui.styling.Dimensions
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.px
|
||||
import it.hamy.muza.utils.artistSortByKey
|
||||
import it.hamy.muza.utils.artistSortOrderKey
|
||||
import it.hamy.muza.utils.rememberPreference
|
||||
|
||||
@ExperimentalFoundationApi
|
||||
@ExperimentalAnimationApi
|
||||
@@ -94,7 +94,7 @@ fun HomeArtistList(
|
||||
contentType = 0,
|
||||
span = { GridItemSpan(maxLineSpan) }
|
||||
) {
|
||||
Header(title = "Artists") {
|
||||
Header(title = "Исполнители") {
|
||||
HeaderIconButton(
|
||||
icon = R.drawable.text,
|
||||
color = if (sortBy == ArtistSortBy.Name) colorPalette.text else colorPalette.textDisabled,
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.screens.home
|
||||
package it.hamy.muza.ui.screens.home
|
||||
|
||||
import androidx.compose.animation.ExperimentalAnimationApi
|
||||
import androidx.compose.animation.core.LinearEasing
|
||||
@@ -30,28 +30,28 @@ import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.graphicsLayer
|
||||
import androidx.compose.ui.unit.dp
|
||||
import it.vfsfitvnm.compose.persist.persistList
|
||||
import it.vfsfitvnm.vimusic.Database
|
||||
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets
|
||||
import it.vfsfitvnm.vimusic.R
|
||||
import it.vfsfitvnm.vimusic.enums.BuiltInPlaylist
|
||||
import it.vfsfitvnm.vimusic.enums.PlaylistSortBy
|
||||
import it.vfsfitvnm.vimusic.enums.SortOrder
|
||||
import it.vfsfitvnm.vimusic.models.Playlist
|
||||
import it.vfsfitvnm.vimusic.models.PlaylistPreview
|
||||
import it.vfsfitvnm.vimusic.query
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.FloatingActionsContainerWithScrollToTop
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.Header
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.HeaderIconButton
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.SecondaryTextButton
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.TextFieldDialog
|
||||
import it.vfsfitvnm.vimusic.ui.items.PlaylistItem
|
||||
import it.vfsfitvnm.vimusic.ui.styling.Dimensions
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.px
|
||||
import it.vfsfitvnm.vimusic.utils.playlistSortByKey
|
||||
import it.vfsfitvnm.vimusic.utils.playlistSortOrderKey
|
||||
import it.vfsfitvnm.vimusic.utils.rememberPreference
|
||||
import it.hamy.compose.persist.persistList
|
||||
import it.hamy.muza.Database
|
||||
import it.hamy.muza.LocalPlayerAwareWindowInsets
|
||||
import it.hamy.muza.R
|
||||
import it.hamy.muza.enums.BuiltInPlaylist
|
||||
import it.hamy.muza.enums.PlaylistSortBy
|
||||
import it.hamy.muza.enums.SortOrder
|
||||
import it.hamy.muza.models.Playlist
|
||||
import it.hamy.muza.models.PlaylistPreview
|
||||
import it.hamy.muza.query
|
||||
import it.hamy.muza.ui.components.themed.FloatingActionsContainerWithScrollToTop
|
||||
import it.hamy.muza.ui.components.themed.Header
|
||||
import it.hamy.muza.ui.components.themed.HeaderIconButton
|
||||
import it.hamy.muza.ui.components.themed.SecondaryTextButton
|
||||
import it.hamy.muza.ui.components.themed.TextFieldDialog
|
||||
import it.hamy.muza.ui.items.PlaylistItem
|
||||
import it.hamy.muza.ui.styling.Dimensions
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.px
|
||||
import it.hamy.muza.utils.playlistSortByKey
|
||||
import it.hamy.muza.utils.playlistSortOrderKey
|
||||
import it.hamy.muza.utils.rememberPreference
|
||||
|
||||
@ExperimentalAnimationApi
|
||||
@ExperimentalFoundationApi
|
||||
@@ -69,7 +69,7 @@ fun HomePlaylists(
|
||||
|
||||
if (isCreatingANewPlaylist) {
|
||||
TextFieldDialog(
|
||||
hintText = "Enter the playlist name",
|
||||
hintText = "Введите название плейлиста",
|
||||
onDismiss = {
|
||||
isCreatingANewPlaylist = false
|
||||
},
|
||||
@@ -116,9 +116,9 @@ fun HomePlaylists(
|
||||
.background(colorPalette.background0)
|
||||
) {
|
||||
item(key = "header", contentType = 0, span = { GridItemSpan(maxLineSpan) }) {
|
||||
Header(title = "Playlists") {
|
||||
Header(title = "Плейлисты") {
|
||||
SecondaryTextButton(
|
||||
text = "New playlist",
|
||||
text = "Новый плейлист",
|
||||
onClick = { isCreatingANewPlaylist = true }
|
||||
)
|
||||
|
||||
@@ -164,7 +164,7 @@ fun HomePlaylists(
|
||||
PlaylistItem(
|
||||
icon = R.drawable.heart,
|
||||
colorTint = colorPalette.red,
|
||||
name = "Favorites",
|
||||
name = "Любимые",
|
||||
songCount = null,
|
||||
thumbnailSizeDp = thumbnailSizeDp,
|
||||
alternative = true,
|
||||
@@ -178,7 +178,7 @@ fun HomePlaylists(
|
||||
PlaylistItem(
|
||||
icon = R.drawable.airplane,
|
||||
colorTint = colorPalette.blue,
|
||||
name = "Offline",
|
||||
name = "Сохранённые",
|
||||
songCount = null,
|
||||
thumbnailSizeDp = thumbnailSizeDp,
|
||||
alternative = true,
|
||||
@@ -1,41 +1,41 @@
|
||||
package it.vfsfitvnm.vimusic.ui.screens.home
|
||||
package it.hamy.muza.ui.screens.home
|
||||
|
||||
import androidx.compose.animation.ExperimentalAnimationApi
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.saveable.rememberSaveableStateHolder
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import it.vfsfitvnm.compose.persist.PersistMapCleanup
|
||||
import it.vfsfitvnm.compose.routing.RouteHandler
|
||||
import it.vfsfitvnm.compose.routing.defaultStacking
|
||||
import it.vfsfitvnm.compose.routing.defaultStill
|
||||
import it.vfsfitvnm.compose.routing.defaultUnstacking
|
||||
import it.vfsfitvnm.compose.routing.isStacking
|
||||
import it.vfsfitvnm.compose.routing.isUnknown
|
||||
import it.vfsfitvnm.compose.routing.isUnstacking
|
||||
import it.vfsfitvnm.vimusic.Database
|
||||
import it.vfsfitvnm.vimusic.R
|
||||
import it.vfsfitvnm.vimusic.models.SearchQuery
|
||||
import it.vfsfitvnm.vimusic.query
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.Scaffold
|
||||
import it.vfsfitvnm.vimusic.ui.screens.albumRoute
|
||||
import it.vfsfitvnm.vimusic.ui.screens.artistRoute
|
||||
import it.vfsfitvnm.vimusic.ui.screens.builtInPlaylistRoute
|
||||
import it.vfsfitvnm.vimusic.ui.screens.builtinplaylist.BuiltInPlaylistScreen
|
||||
import it.vfsfitvnm.vimusic.ui.screens.globalRoutes
|
||||
import it.vfsfitvnm.vimusic.ui.screens.localPlaylistRoute
|
||||
import it.vfsfitvnm.vimusic.ui.screens.localplaylist.LocalPlaylistScreen
|
||||
import it.vfsfitvnm.vimusic.ui.screens.playlistRoute
|
||||
import it.vfsfitvnm.vimusic.ui.screens.search.SearchScreen
|
||||
import it.vfsfitvnm.vimusic.ui.screens.searchResultRoute
|
||||
import it.vfsfitvnm.vimusic.ui.screens.searchRoute
|
||||
import it.vfsfitvnm.vimusic.ui.screens.searchresult.SearchResultScreen
|
||||
import it.vfsfitvnm.vimusic.ui.screens.settings.SettingsScreen
|
||||
import it.vfsfitvnm.vimusic.ui.screens.settingsRoute
|
||||
import it.vfsfitvnm.vimusic.utils.homeScreenTabIndexKey
|
||||
import it.vfsfitvnm.vimusic.utils.pauseSearchHistoryKey
|
||||
import it.vfsfitvnm.vimusic.utils.preferences
|
||||
import it.vfsfitvnm.vimusic.utils.rememberPreference
|
||||
import it.hamy.compose.persist.PersistMapCleanup
|
||||
import it.hamy.compose.routing.RouteHandler
|
||||
import it.hamy.compose.routing.defaultStacking
|
||||
import it.hamy.compose.routing.defaultStill
|
||||
import it.hamy.compose.routing.defaultUnstacking
|
||||
import it.hamy.compose.routing.isStacking
|
||||
import it.hamy.compose.routing.isUnknown
|
||||
import it.hamy.compose.routing.isUnstacking
|
||||
import it.hamy.muza.Database
|
||||
import it.hamy.muza.R
|
||||
import it.hamy.muza.models.SearchQuery
|
||||
import it.hamy.muza.query
|
||||
import it.hamy.muza.ui.components.themed.Scaffold
|
||||
import it.hamy.muza.ui.screens.albumRoute
|
||||
import it.hamy.muza.ui.screens.artistRoute
|
||||
import it.hamy.muza.ui.screens.builtInPlaylistRoute
|
||||
import it.hamy.muza.ui.screens.builtinplaylist.BuiltInPlaylistScreen
|
||||
import it.hamy.muza.ui.screens.globalRoutes
|
||||
import it.hamy.muza.ui.screens.localPlaylistRoute
|
||||
import it.hamy.muza.ui.screens.localplaylist.LocalPlaylistScreen
|
||||
import it.hamy.muza.ui.screens.playlistRoute
|
||||
import it.hamy.muza.ui.screens.search.SearchScreen
|
||||
import it.hamy.muza.ui.screens.searchResultRoute
|
||||
import it.hamy.muza.ui.screens.searchRoute
|
||||
import it.hamy.muza.ui.screens.searchresult.SearchResultScreen
|
||||
import it.hamy.muza.ui.screens.settings.SettingsScreen
|
||||
import it.hamy.muza.ui.screens.settingsRoute
|
||||
import it.hamy.muza.utils.homeScreenTabIndexKey
|
||||
import it.hamy.muza.utils.pauseSearchHistoryKey
|
||||
import it.hamy.muza.utils.preferences
|
||||
import it.hamy.muza.utils.rememberPreference
|
||||
|
||||
@ExperimentalFoundationApi
|
||||
@ExperimentalAnimationApi
|
||||
@@ -119,11 +119,11 @@ fun HomeScreen(onPlaylistUrl: (String) -> Unit) {
|
||||
tabIndex = tabIndex,
|
||||
onTabChanged = onTabChanged,
|
||||
tabColumnContent = { Item ->
|
||||
Item(0, "Quick picks", R.drawable.sparkles)
|
||||
Item(1, "Songs", R.drawable.musical_notes)
|
||||
Item(2, "Playlists", R.drawable.playlist)
|
||||
Item(3, "Artists", R.drawable.person)
|
||||
Item(4, "Albums", R.drawable.disc)
|
||||
Item(0, "Обзор", R.drawable.sparkles)
|
||||
Item(1, "Песни", R.drawable.musical_notes)
|
||||
Item(2, "Плейлисты", R.drawable.playlist)
|
||||
Item(3, "Исполнители", R.drawable.person)
|
||||
Item(4, "Альбомы", R.drawable.disc)
|
||||
}
|
||||
) { currentTabIndex ->
|
||||
saveableStateHolder.SaveableStateProvider(key = currentTabIndex) {
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.vfsfitvnm.vimusic.ui.screens.home
|
||||
package it.hamy.muza.ui.screens.home
|
||||
|
||||
import androidx.compose.animation.ExperimentalAnimationApi
|
||||
import androidx.compose.animation.core.LinearEasing
|
||||
@@ -31,33 +31,33 @@ import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.graphicsLayer
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import it.vfsfitvnm.compose.persist.persistList
|
||||
import it.vfsfitvnm.vimusic.Database
|
||||
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets
|
||||
import it.vfsfitvnm.vimusic.LocalPlayerServiceBinder
|
||||
import it.vfsfitvnm.vimusic.R
|
||||
import it.vfsfitvnm.vimusic.enums.SongSortBy
|
||||
import it.vfsfitvnm.vimusic.enums.SortOrder
|
||||
import it.vfsfitvnm.vimusic.models.Song
|
||||
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.FloatingActionsContainerWithScrollToTop
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.Header
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.HeaderIconButton
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.InHistoryMediaItemMenu
|
||||
import it.vfsfitvnm.vimusic.ui.items.SongItem
|
||||
import it.vfsfitvnm.vimusic.ui.styling.Dimensions
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.ui.styling.onOverlay
|
||||
import it.vfsfitvnm.vimusic.ui.styling.overlay
|
||||
import it.vfsfitvnm.vimusic.ui.styling.px
|
||||
import it.vfsfitvnm.vimusic.utils.asMediaItem
|
||||
import it.vfsfitvnm.vimusic.utils.center
|
||||
import it.vfsfitvnm.vimusic.utils.color
|
||||
import it.vfsfitvnm.vimusic.utils.forcePlayAtIndex
|
||||
import it.vfsfitvnm.vimusic.utils.rememberPreference
|
||||
import it.vfsfitvnm.vimusic.utils.semiBold
|
||||
import it.vfsfitvnm.vimusic.utils.songSortByKey
|
||||
import it.vfsfitvnm.vimusic.utils.songSortOrderKey
|
||||
import it.hamy.compose.persist.persistList
|
||||
import it.hamy.muza.Database
|
||||
import it.hamy.muza.LocalPlayerAwareWindowInsets
|
||||
import it.hamy.muza.LocalPlayerServiceBinder
|
||||
import it.hamy.muza.R
|
||||
import it.hamy.muza.enums.SongSortBy
|
||||
import it.hamy.muza.enums.SortOrder
|
||||
import it.hamy.muza.models.Song
|
||||
import it.hamy.muza.ui.components.LocalMenuState
|
||||
import it.hamy.muza.ui.components.themed.FloatingActionsContainerWithScrollToTop
|
||||
import it.hamy.muza.ui.components.themed.Header
|
||||
import it.hamy.muza.ui.components.themed.HeaderIconButton
|
||||
import it.hamy.muza.ui.components.themed.InHistoryMediaItemMenu
|
||||
import it.hamy.muza.ui.items.SongItem
|
||||
import it.hamy.muza.ui.styling.Dimensions
|
||||
import it.hamy.muza.ui.styling.LocalAppearance
|
||||
import it.hamy.muza.ui.styling.onOverlay
|
||||
import it.hamy.muza.ui.styling.overlay
|
||||
import it.hamy.muza.ui.styling.px
|
||||
import it.hamy.muza.utils.asMediaItem
|
||||
import it.hamy.muza.utils.center
|
||||
import it.hamy.muza.utils.color
|
||||
import it.hamy.muza.utils.forcePlayAtIndex
|
||||
import it.hamy.muza.utils.rememberPreference
|
||||
import it.hamy.muza.utils.semiBold
|
||||
import it.hamy.muza.utils.songSortByKey
|
||||
import it.hamy.muza.utils.songSortOrderKey
|
||||
|
||||
@ExperimentalFoundationApi
|
||||
@ExperimentalAnimationApi
|
||||
@@ -102,7 +102,7 @@ fun HomeSongs(
|
||||
key = "header",
|
||||
contentType = 0
|
||||
) {
|
||||
Header(title = "Songs") {
|
||||
Header(title = "Песни") {
|
||||
HeaderIconButton(
|
||||
icon = R.drawable.trending,
|
||||
color = if (sortBy == SongSortBy.PlayTime) colorPalette.text else colorPalette.textDisabled,
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user