Skip to content

Commit

Permalink
💬 Improved navigation
Browse files Browse the repository at this point in the history
* fixed #60
* fixed broken line slider
  • Loading branch information
shub39 committed Dec 8, 2024
1 parent f470249 commit 8b6d104
Show file tree
Hide file tree
Showing 12 changed files with 31 additions and 20 deletions.
2 changes: 1 addition & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
<service android:name=".lyrics.domain.listener.NotificationListener"
<service android:name=".lyrics.data.listener.NotificationListener"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"
android:enabled="true"
android:exported="true"
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/shub39/rush/app/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import com.shub39.rush.core.data.RushDataStore
import com.shub39.rush.lyrics.domain.listener.MediaListener
import com.shub39.rush.lyrics.data.listener.MediaListener
import com.shub39.rush.core.presentation.RushTheme
import org.koin.compose.KoinContext

Expand Down
3 changes: 3 additions & 0 deletions app/src/main/java/com/shub39/rush/app/Route.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ sealed interface Route {
@Serializable
data object RushGraph: Route

@Serializable
data object LyricsGraph: Route

@Serializable
data object LyricsPage: Route

Expand Down
20 changes: 11 additions & 9 deletions app/src/main/java/com/shub39/rush/app/RushApp.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.shub39.rush.app

import androidx.compose.animation.core.tween
import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
import androidx.compose.foundation.layout.fillMaxSize
Expand All @@ -17,7 +16,7 @@ import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.navigation
import androidx.navigation.compose.rememberNavController
import com.shub39.rush.lyrics.domain.listener.NotificationListener
import com.shub39.rush.lyrics.data.listener.NotificationListener
import com.shub39.rush.lyrics.presentation.search_sheet.SearchSheet
import com.shub39.rush.lyrics.presentation.lyrics.LyricsPage
import com.shub39.rush.lyrics.presentation.saved.SavedPage
Expand Down Expand Up @@ -52,12 +51,11 @@ fun RushApp(
NavHost(
navController = navController,
startDestination = Route.RushGraph,
modifier = Modifier
.fillMaxSize(),
enterTransition = { fadeIn(animationSpec = tween(500)) },
exitTransition = { fadeOut(animationSpec = tween(500)) },
popEnterTransition = { fadeIn(animationSpec = tween(500)) },
popExitTransition = { fadeOut(animationSpec = tween(500)) }
modifier = Modifier.fillMaxSize(),
enterTransition = { fadeIn() },
exitTransition = { fadeOut() },
popEnterTransition = { fadeIn() },
popExitTransition = { fadeOut() }
) {
navigation<Route.RushGraph>(
startDestination = Route.SavedPage
Expand All @@ -77,7 +75,7 @@ fun RushApp(
state = savedState,
action = rushViewModel::onSavedPageAction,
onSongClick = {
navController.navigate(Route.LyricsPage)
navController.navigate(Route.LyricsGraph)
},
paddingValues = paddingValues
)
Expand All @@ -103,7 +101,11 @@ fun RushApp(
)
}
}
}

navigation<Route.LyricsGraph>(
startDestination = Route.LyricsPage
) {
composable<Route.SharePage> {
currentRoute = Route.SharePage

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.shub39.rush.lyrics.domain.listener
package com.shub39.rush.lyrics.data.listener

import android.content.ComponentName
import android.content.Context
Expand All @@ -10,6 +10,7 @@ import android.media.session.PlaybackState
import android.os.Build
import android.util.Log
import androidx.core.content.getSystemService
import com.shub39.rush.lyrics.domain.UILogic.getMainArtist
import com.shub39.rush.lyrics.domain.UILogic.getMainTitle
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
Expand Down Expand Up @@ -138,7 +139,7 @@ object MediaListener {
?: metadata?.getString(MediaMetadata.METADATA_KEY_ALBUM_ARTIST) ?: ""

coroutineScope.launch {
songInfoFlow.emit(Pair(getMainTitle(title), artist))
songInfoFlow.emit(Pair(getMainTitle(title), getMainArtist(artist)))
playbackSpeedFlow.emit(
if (controller.playbackState?.let { isActive(it) } == true)
controller.playbackState?.playbackSpeed ?: 1f
Expand All @@ -149,6 +150,7 @@ object MediaListener {

}

// 🙏
fun seek(timestamp: Long) {
activeMediaController?.transportControls?.seekTo(timestamp)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.shub39.rush.lyrics.domain.listener
package com.shub39.rush.lyrics.data.listener

import android.content.Context
import android.service.notification.NotificationListenerService
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/java/com/shub39/rush/lyrics/domain/UILogic.kt
Original file line number Diff line number Diff line change
Expand Up @@ -164,4 +164,8 @@ object UILogic {
val regex = Regex("\\s*\\(.*?\\)\\s*$")
return songTitle.replace(regex, "").trim()
}

fun getMainArtist(artists: String): String {
return artists.split(",")[0].trim()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import androidx.lifecycle.viewModelScope
import com.shub39.rush.lyrics.presentation.setting.component.AudioFile
import com.shub39.rush.lyrics.domain.SearchResult
import com.shub39.rush.core.domain.Result
import com.shub39.rush.lyrics.domain.listener.MediaListener
import com.shub39.rush.lyrics.data.listener.MediaListener
import com.shub39.rush.lyrics.domain.UILogic.sortMapByKeys
import com.shub39.rush.core.presentation.errorStringRes
import com.shub39.rush.lyrics.domain.SongRepo
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ import com.shub39.rush.core.presentation.ArtFromUrl
import com.shub39.rush.lyrics.presentation.lyrics.component.ErrorCard
import com.shub39.rush.lyrics.presentation.lyrics.component.LoadingCard
import com.shub39.rush.core.data.RushDataStore
import com.shub39.rush.lyrics.domain.listener.MediaListener
import com.shub39.rush.lyrics.domain.listener.NotificationListener
import com.shub39.rush.lyrics.data.listener.MediaListener
import com.shub39.rush.lyrics.data.listener.NotificationListener
import com.shub39.rush.lyrics.domain.UILogic.copyToClipBoard
import com.shub39.rush.lyrics.domain.UILogic.getCurrentLyricIndex
import com.shub39.rush.lyrics.domain.UILogic.getMainTitle
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ import com.shub39.rush.lyrics.presentation.lyrics.component.Empty
import com.shub39.rush.lyrics.presentation.saved.component.GroupedCard
import com.shub39.rush.lyrics.presentation.saved.component.SongCard
import com.shub39.rush.core.data.RushDataStore
import com.shub39.rush.lyrics.domain.listener.NotificationListener
import com.shub39.rush.lyrics.data.listener.NotificationListener
import kotlinx.coroutines.launch

@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ enum class SortOrder(
TITLE_ASC("title_asc", R.string.sort_title_asc),
TITLE_DESC("title_desc", R.string.sort_title_desc),
ARTISTS_ASC("artists_asc", R.string.sort_artists_asc),
ALBUM_ASC("album_asc", R.string.sort_album_asc),
ALBUM_ASC("album_asc", R.string.sort_album_asc)
}
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ fun SettingPage(
Slider(
value = maxLinesFlow.toFloat(),
valueRange = 2f..8f,
steps = 7,
steps = 5,
onValueChange = {
coroutineScope.launch {
RushDataStore.updateMaxLines(context, it.toInt())
Expand Down

0 comments on commit 8b6d104

Please sign in to comment.