refactor: update package structure to use core namespace

This commit is contained in:
2026-05-06 17:24:04 +02:00
parent 41f7129b08
commit 322eb69ab5
194 changed files with 465 additions and 457 deletions

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin
package hu.bbara.purefin.core
import javax.inject.Qualifier

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.data
package hu.bbara.purefin.core.data
interface AuthenticationRepository {
suspend fun login(url: String, username: String, password: String): Boolean

View File

@@ -1,7 +1,7 @@
package hu.bbara.purefin.data
package hu.bbara.purefin.core.data
import hu.bbara.purefin.Offline
import hu.bbara.purefin.Online
import hu.bbara.purefin.core.Offline
import hu.bbara.purefin.core.Online
import hu.bbara.purefin.model.Episode
import hu.bbara.purefin.model.Movie
import hu.bbara.purefin.model.Series

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.data
package hu.bbara.purefin.core.data
import hu.bbara.purefin.model.Episode
import hu.bbara.purefin.model.Movie

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.data
package hu.bbara.purefin.core.data
import hu.bbara.purefin.model.Library
import hu.bbara.purefin.model.Media

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.data
package hu.bbara.purefin.core.data
import hu.bbara.purefin.model.Episode
import hu.bbara.purefin.model.Movie

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.data
package hu.bbara.purefin.core.data
import java.util.UUID

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.data
package hu.bbara.purefin.core.data
import kotlinx.coroutines.flow.Flow

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.data
package hu.bbara.purefin.core.data
import hu.bbara.purefin.model.Episode
import hu.bbara.purefin.model.Movie

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.data
package hu.bbara.purefin.core.data
import hu.bbara.purefin.model.Episode
import hu.bbara.purefin.model.Movie

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.data
package hu.bbara.purefin.core.data
import hu.bbara.purefin.model.PlayableMedia
import java.util.UUID

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.data
package hu.bbara.purefin.core.data
enum class PlaybackMethod {
DIRECT_PLAY,

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.data
package hu.bbara.purefin.core.data
enum class PlaybackProfileFamily {
MOBILE,

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.data
package hu.bbara.purefin.core.data
import java.util.UUID

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.data
package hu.bbara.purefin.core.data
data class PlaybackReportContext(
val playMethod: PlaybackMethod,

View File

@@ -1,6 +1,6 @@
package hu.bbara.purefin.data
package hu.bbara.purefin.core.data
import hu.bbara.purefin.feature.search.SearchResult
import hu.bbara.purefin.core.feature.search.SearchResult
import hu.bbara.purefin.model.Genre
import kotlinx.coroutines.flow.StateFlow

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.data
package hu.bbara.purefin.core.data
interface SessionBootstrapper {
suspend fun initialize()

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.data
package hu.bbara.purefin.core.data
import kotlinx.coroutines.flow.Flow
import java.util.UUID

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.data
package hu.bbara.purefin.core.data
import kotlinx.coroutines.flow.Flow
import java.util.UUID

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.download
package hu.bbara.purefin.core.download
import dagger.Binds
import dagger.Module

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.download
package hu.bbara.purefin.core.download
import android.content.Context
import androidx.annotation.OptIn

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.download
package hu.bbara.purefin.core.download
sealed class DownloadState {
data object NotDownloaded : DownloadState()

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.download
package hu.bbara.purefin.core.download
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.StateFlow

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.download
package hu.bbara.purefin.core.download
import android.content.Context
import android.util.Log
@@ -9,9 +9,9 @@ import androidx.media3.exoplayer.offline.Download
import androidx.media3.exoplayer.offline.DownloadManager
import androidx.media3.exoplayer.offline.DownloadRequest
import dagger.hilt.android.qualifiers.ApplicationContext
import hu.bbara.purefin.data.DownloadMediaSourceResolver
import hu.bbara.purefin.data.OfflineCatalogStore
import hu.bbara.purefin.data.SmartDownloadStore
import hu.bbara.purefin.core.data.DownloadMediaSourceResolver
import hu.bbara.purefin.core.data.OfflineCatalogStore
import hu.bbara.purefin.core.data.SmartDownloadStore
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.delay

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.download
package hu.bbara.purefin.core.download
import android.app.Notification
import android.content.Context

View File

@@ -1,26 +1,26 @@
package hu.bbara.purefin.feature.browse.home
package hu.bbara.purefin.core.feature.browse.home
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import hu.bbara.purefin.data.HomeRepository
import hu.bbara.purefin.data.LocalMediaRepository
import hu.bbara.purefin.data.UserSessionRepository
import hu.bbara.purefin.download.MediaDownloadController
import hu.bbara.purefin.jellyfin.JellyfinMediaMetadataUpdater
import hu.bbara.purefin.core.data.HomeRepository
import hu.bbara.purefin.core.data.LocalMediaRepository
import hu.bbara.purefin.core.data.UserSessionRepository
import hu.bbara.purefin.core.download.MediaDownloadController
import hu.bbara.purefin.core.jellyfin.JellyfinMediaMetadataUpdater
import hu.bbara.purefin.core.model.EpisodeUiModel
import hu.bbara.purefin.core.model.LibraryUiModel
import hu.bbara.purefin.core.model.MediaUiModel
import hu.bbara.purefin.core.model.MovieUiModel
import hu.bbara.purefin.core.model.SeriesUiModel
import hu.bbara.purefin.core.navigation.EpisodeDto
import hu.bbara.purefin.core.navigation.LibraryDto
import hu.bbara.purefin.core.navigation.MovieDto
import hu.bbara.purefin.core.navigation.NavigationManager
import hu.bbara.purefin.core.navigation.Route
import hu.bbara.purefin.core.navigation.SeriesDto
import hu.bbara.purefin.model.LibraryKind
import hu.bbara.purefin.model.Media
import hu.bbara.purefin.navigation.EpisodeDto
import hu.bbara.purefin.navigation.LibraryDto
import hu.bbara.purefin.navigation.MovieDto
import hu.bbara.purefin.navigation.NavigationManager
import hu.bbara.purefin.navigation.Route
import hu.bbara.purefin.navigation.SeriesDto
import hu.bbara.purefin.ui.model.EpisodeUiModel
import hu.bbara.purefin.ui.model.LibraryUiModel
import hu.bbara.purefin.ui.model.MediaUiModel
import hu.bbara.purefin.ui.model.MovieUiModel
import hu.bbara.purefin.ui.model.SeriesUiModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
@@ -172,7 +172,12 @@ class AppViewModel @Inject constructor(
fun onLibrarySelected(id: UUID, name: String) {
viewModelScope.launch {
navigationManager.navigate(Route.LibraryRoute(library = LibraryDto(id = id, name = name)))
navigationManager.navigate(
Route.LibraryRoute(library = LibraryDto(
id = id,
name = name
)
))
}
}
@@ -189,31 +194,34 @@ class AppViewModel @Inject constructor(
}
private fun onMovieSelected(movieId: UUID) {
navigationManager.navigate(Route.MovieRoute(
MovieDto(
id = movieId,
)
navigationManager.navigate(
Route.MovieRoute(
MovieDto(
id = movieId,
)
))
}
private fun onSeriesSelected(seriesId: UUID) {
viewModelScope.launch {
navigationManager.navigate(Route.SeriesRoute(
SeriesDto(
id = seriesId,
)
navigationManager.navigate(
Route.SeriesRoute(
SeriesDto(
id = seriesId,
)
))
}
}
private fun onEpisodeSelected(seriesId: UUID, seasonId: UUID, episodeId: UUID) {
viewModelScope.launch {
navigationManager.navigate(Route.EpisodeRoute(
EpisodeDto(
id = episodeId,
seasonId = seasonId,
seriesId = seriesId
)
navigationManager.navigate(
Route.EpisodeRoute(
EpisodeDto(
id = episodeId,
seasonId = seasonId,
seriesId = seriesId
)
))
}
}

View File

@@ -1,17 +1,17 @@
package hu.bbara.purefin.feature.browse.library
package hu.bbara.purefin.core.feature.browse.library
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import hu.bbara.purefin.data.HomeRepository
import hu.bbara.purefin.core.data.HomeRepository
import hu.bbara.purefin.core.model.MediaUiModel
import hu.bbara.purefin.core.model.MovieUiModel
import hu.bbara.purefin.core.model.SeriesUiModel
import hu.bbara.purefin.core.navigation.MovieDto
import hu.bbara.purefin.core.navigation.NavigationManager
import hu.bbara.purefin.core.navigation.Route
import hu.bbara.purefin.core.navigation.SeriesDto
import hu.bbara.purefin.model.LibraryKind
import hu.bbara.purefin.navigation.MovieDto
import hu.bbara.purefin.navigation.NavigationManager
import hu.bbara.purefin.navigation.Route
import hu.bbara.purefin.navigation.SeriesDto
import hu.bbara.purefin.ui.model.MediaUiModel
import hu.bbara.purefin.ui.model.MovieUiModel
import hu.bbara.purefin.ui.model.SeriesUiModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
@@ -50,19 +50,21 @@ class LibraryViewModel @Inject constructor(
}
fun onMovieSelected(movieId: UUID) {
navigationManager.navigate(Route.MovieRoute(
MovieDto(
id = movieId,
)
navigationManager.navigate(
Route.MovieRoute(
MovieDto(
id = movieId,
)
))
}
fun onSeriesSelected(seriesId: UUID) {
viewModelScope.launch {
navigationManager.navigate(Route.SeriesRoute(
SeriesDto(
id = seriesId,
)
navigationManager.navigate(
Route.SeriesRoute(
SeriesDto(
id = seriesId,
)
))
}
}

View File

@@ -1,15 +1,15 @@
package hu.bbara.purefin.feature.content.episode
package hu.bbara.purefin.core.feature.content.episode
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import hu.bbara.purefin.data.LocalMediaRepository
import hu.bbara.purefin.download.DownloadState
import hu.bbara.purefin.download.MediaDownloadController
import hu.bbara.purefin.core.data.LocalMediaRepository
import hu.bbara.purefin.core.download.DownloadState
import hu.bbara.purefin.core.download.MediaDownloadController
import hu.bbara.purefin.core.navigation.NavigationManager
import hu.bbara.purefin.core.navigation.Route
import hu.bbara.purefin.core.navigation.SeriesDto
import hu.bbara.purefin.model.Episode
import hu.bbara.purefin.navigation.NavigationManager
import hu.bbara.purefin.navigation.Route
import hu.bbara.purefin.navigation.SeriesDto
import java.util.UUID
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted

View File

@@ -1,14 +1,14 @@
package hu.bbara.purefin.feature.content.movie
package hu.bbara.purefin.core.feature.content.movie
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import hu.bbara.purefin.data.LocalMediaRepository
import hu.bbara.purefin.download.DownloadState
import hu.bbara.purefin.download.MediaDownloadController
import hu.bbara.purefin.core.data.LocalMediaRepository
import hu.bbara.purefin.core.download.DownloadState
import hu.bbara.purefin.core.download.MediaDownloadController
import hu.bbara.purefin.core.navigation.NavigationManager
import hu.bbara.purefin.core.navigation.Route
import hu.bbara.purefin.model.Movie
import hu.bbara.purefin.navigation.NavigationManager
import hu.bbara.purefin.navigation.Route
import java.util.UUID
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted

View File

@@ -1,16 +1,16 @@
package hu.bbara.purefin.feature.content.series
package hu.bbara.purefin.core.feature.content.series
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import hu.bbara.purefin.data.LocalMediaRepository
import hu.bbara.purefin.download.DownloadState
import hu.bbara.purefin.download.MediaDownloadController
import hu.bbara.purefin.core.data.LocalMediaRepository
import hu.bbara.purefin.core.download.DownloadState
import hu.bbara.purefin.core.download.MediaDownloadController
import hu.bbara.purefin.core.navigation.EpisodeDto
import hu.bbara.purefin.core.navigation.NavigationManager
import hu.bbara.purefin.core.navigation.Route
import hu.bbara.purefin.model.Episode
import hu.bbara.purefin.model.Series
import hu.bbara.purefin.navigation.EpisodeDto
import hu.bbara.purefin.navigation.NavigationManager
import hu.bbara.purefin.navigation.Route
import java.util.UUID
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
@@ -105,12 +105,13 @@ class SeriesViewModel @Inject constructor(
}
fun onSelectEpisode(seriesId: UUID, seasonId: UUID, episodeId: UUID) {
navigationManager.navigate(Route.EpisodeRoute(
EpisodeDto(
id = episodeId,
seasonId = seasonId,
seriesId = seriesId
)
navigationManager.navigate(
Route.EpisodeRoute(
EpisodeDto(
id = episodeId,
seasonId = seasonId,
seriesId = seriesId
)
))
}

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.feature.downloads
package hu.bbara.purefin.core.feature.downloads
data class ActiveDownloadItem(
val contentId: String,

View File

@@ -1,19 +1,19 @@
package hu.bbara.purefin.feature.downloads
package hu.bbara.purefin.core.feature.downloads
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import hu.bbara.purefin.Offline
import hu.bbara.purefin.data.LocalMediaRepository
import hu.bbara.purefin.download.MediaDownloadController
import hu.bbara.purefin.image.ArtworkKind
import hu.bbara.purefin.image.ImageUrlBuilder
import hu.bbara.purefin.navigation.MovieDto
import hu.bbara.purefin.navigation.NavigationManager
import hu.bbara.purefin.navigation.Route
import hu.bbara.purefin.navigation.SeriesDto
import hu.bbara.purefin.ui.model.MovieUiModel
import hu.bbara.purefin.ui.model.SeriesUiModel
import hu.bbara.purefin.core.Offline
import hu.bbara.purefin.core.data.LocalMediaRepository
import hu.bbara.purefin.core.download.MediaDownloadController
import hu.bbara.purefin.core.image.ArtworkKind
import hu.bbara.purefin.core.image.ImageUrlBuilder
import hu.bbara.purefin.core.model.MovieUiModel
import hu.bbara.purefin.core.model.SeriesUiModel
import hu.bbara.purefin.core.navigation.MovieDto
import hu.bbara.purefin.core.navigation.NavigationManager
import hu.bbara.purefin.core.navigation.Route
import hu.bbara.purefin.core.navigation.SeriesDto
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.stateIn
@@ -29,15 +29,17 @@ class DownloadsViewModel @Inject constructor(
) : ViewModel() {
fun onMovieSelected(movieId: UUID) {
navigationManager.navigate(Route.MovieRoute(
MovieDto(id = movieId)
navigationManager.navigate(
Route.MovieRoute(
MovieDto(id = movieId)
))
}
fun onSeriesSelected(seriesId: UUID) {
viewModelScope.launch {
navigationManager.navigate(Route.SeriesRoute(
SeriesDto(id = seriesId)
navigationManager.navigate(
Route.SeriesRoute(
SeriesDto(id = seriesId)
))
}
}

View File

@@ -1,10 +1,10 @@
package hu.bbara.purefin.feature.login
package hu.bbara.purefin.core.feature.login
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import hu.bbara.purefin.data.AuthenticationRepository
import hu.bbara.purefin.data.UserSessionRepository
import hu.bbara.purefin.core.data.AuthenticationRepository
import hu.bbara.purefin.core.data.UserSessionRepository
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.feature.search
package hu.bbara.purefin.core.feature.search
import hu.bbara.purefin.model.MediaKind
import hu.bbara.purefin.model.Movie

View File

@@ -1,13 +1,13 @@
package hu.bbara.purefin.feature.search
package hu.bbara.purefin.core.feature.search
import androidx.lifecycle.ViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import hu.bbara.purefin.data.SearchManager
import hu.bbara.purefin.core.data.SearchManager
import hu.bbara.purefin.core.navigation.MovieDto
import hu.bbara.purefin.core.navigation.NavigationManager
import hu.bbara.purefin.core.navigation.Route
import hu.bbara.purefin.core.navigation.SeriesDto
import hu.bbara.purefin.model.MediaKind
import hu.bbara.purefin.navigation.MovieDto
import hu.bbara.purefin.navigation.NavigationManager
import hu.bbara.purefin.navigation.Route
import hu.bbara.purefin.navigation.SeriesDto
import java.util.UUID
import javax.inject.Inject

View File

@@ -1,13 +1,13 @@
package hu.bbara.purefin.feature.settings
package hu.bbara.purefin.core.feature.settings
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import hu.bbara.purefin.navigation.NavigationManager
import hu.bbara.purefin.settings.BooleanSetting
import hu.bbara.purefin.settings.NumberSetting
import hu.bbara.purefin.settings.SettingsRepository
import hu.bbara.purefin.settings.StringSetting
import hu.bbara.purefin.core.navigation.NavigationManager
import hu.bbara.purefin.core.settings.BooleanSetting
import hu.bbara.purefin.core.settings.NumberSetting
import hu.bbara.purefin.core.settings.SettingsRepository
import hu.bbara.purefin.core.settings.StringSetting
import kotlinx.coroutines.launch
import javax.inject.Inject

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.feature.update
package hu.bbara.purefin.core.feature.update
data class AppUpdateInfo(
val versionCode: Long,

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.feature.update
package hu.bbara.purefin.core.feature.update
interface AppUpdateInstaller {
suspend fun installUpdate(update: AppUpdateInfo): String

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.feature.update
package hu.bbara.purefin.core.feature.update
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.feature.update
package hu.bbara.purefin.core.feature.update
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.feature.update
package hu.bbara.purefin.core.feature.update
interface AppVersionProvider {
val versionCode: Long

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.image
package hu.bbara.purefin.core.image
enum class ArtworkKind(
internal val pathSegment: String,

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.image
package hu.bbara.purefin.core.image
import java.util.UUID

View File

@@ -1,6 +1,6 @@
package hu.bbara.purefin.jellyfin
package hu.bbara.purefin.core.jellyfin
import hu.bbara.purefin.data.UserSessionRepository
import hu.bbara.purefin.core.data.UserSessionRepository
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.jellyfin
package hu.bbara.purefin.core.jellyfin
import java.util.UUID

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.jellyfin
package hu.bbara.purefin.core.jellyfin
import dagger.Module
import dagger.Provides

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.ui.model
package hu.bbara.purefin.core.model
import hu.bbara.purefin.model.LibraryKind
import java.util.UUID

View File

@@ -1,7 +1,7 @@
package hu.bbara.purefin.ui.model
package hu.bbara.purefin.core.model
import hu.bbara.purefin.image.ArtworkKind
import hu.bbara.purefin.image.ImageUrlBuilder
import hu.bbara.purefin.core.image.ArtworkKind
import hu.bbara.purefin.core.image.ImageUrlBuilder
import hu.bbara.purefin.model.Episode
import hu.bbara.purefin.model.Movie
import hu.bbara.purefin.model.Series

View File

@@ -1,12 +1,12 @@
package hu.bbara.purefin.module
package hu.bbara.purefin.core.module
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import hu.bbara.purefin.data.CompositeLocalMediaRepository
import hu.bbara.purefin.data.LocalMediaUpdater
import hu.bbara.purefin.data.LocalMediaRepository
import hu.bbara.purefin.core.data.CompositeLocalMediaRepository
import hu.bbara.purefin.core.data.LocalMediaRepository
import hu.bbara.purefin.core.data.LocalMediaUpdater
@Module

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.navigation
package hu.bbara.purefin.core.navigation
import kotlinx.serialization.Serializable
import java.util.UUID

View File

@@ -1,8 +1,7 @@
package hu.bbara.purefin.navigation
package hu.bbara.purefin.core.navigation
import java.util.UUID
import kotlinx.serialization.Serializable
import hu.bbara.purefin.navigation.UuidSerializer
@Serializable
data class LibraryDto(

View File

@@ -1,8 +1,7 @@
package hu.bbara.purefin.navigation
package hu.bbara.purefin.core.navigation
import java.util.UUID
import kotlinx.serialization.Serializable
import hu.bbara.purefin.navigation.UuidSerializer
@Serializable
data class MovieDto(

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.navigation
package hu.bbara.purefin.core.navigation
import kotlinx.coroutines.channels.BufferOverflow
import kotlinx.coroutines.flow.MutableSharedFlow

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.navigation
package hu.bbara.purefin.core.navigation
import dagger.Module
import dagger.Provides

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.navigation
package hu.bbara.purefin.core.navigation
import androidx.navigation3.runtime.NavKey
import kotlinx.serialization.Serializable

View File

@@ -1,8 +1,7 @@
package hu.bbara.purefin.navigation
package hu.bbara.purefin.core.navigation
import java.util.UUID
import kotlinx.serialization.Serializable
import hu.bbara.purefin.navigation.UuidSerializer
@Serializable
data class SeriesDto(

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.navigation
package hu.bbara.purefin.core.navigation
import kotlinx.serialization.KSerializer
import kotlinx.serialization.descriptors.PrimitiveKind

View File

@@ -1,9 +1,9 @@
package hu.bbara.purefin.player.manager
package hu.bbara.purefin.core.player.manager
import android.util.Log
import androidx.media3.exoplayer.ExoPlayer
import hu.bbara.purefin.core.player.model.SegmentStatus
import hu.bbara.purefin.model.MediaSegment
import hu.bbara.purefin.player.model.SegmentStatus
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.player.manager
package hu.bbara.purefin.core.player.manager
import androidx.annotation.OptIn
import androidx.media3.common.C
@@ -9,21 +9,21 @@ import androidx.media3.common.TrackSelectionOverride
import androidx.media3.common.util.UnstableApi
import androidx.media3.exoplayer.ExoPlayer
import dagger.hilt.android.scopes.ViewModelScoped
import hu.bbara.purefin.data.PlayableMediaRepository
import hu.bbara.purefin.data.PlaybackReportContext
import hu.bbara.purefin.core.data.PlayableMediaRepository
import hu.bbara.purefin.core.data.PlaybackReportContext
import hu.bbara.purefin.core.player.model.MetadataState
import hu.bbara.purefin.core.player.model.PlaybackProgressSnapshot
import hu.bbara.purefin.core.player.model.PlaybackStateSnapshot
import hu.bbara.purefin.core.player.model.SegmentStatus
import hu.bbara.purefin.core.player.model.TrackOption
import hu.bbara.purefin.core.player.model.TrackType
import hu.bbara.purefin.model.AudioTrackProperties
import hu.bbara.purefin.model.MediaSegment
import hu.bbara.purefin.model.PlayableMedia
import hu.bbara.purefin.model.SegmentType
import hu.bbara.purefin.model.SubtitleTrackProperties
import hu.bbara.purefin.player.model.MetadataState
import hu.bbara.purefin.player.model.PlaybackProgressSnapshot
import hu.bbara.purefin.player.model.PlaybackStateSnapshot
import hu.bbara.purefin.player.model.SegmentStatus
import hu.bbara.purefin.player.model.TrackOption
import hu.bbara.purefin.player.model.TrackType
import hu.bbara.purefin.player.preference.TrackMatcher
import hu.bbara.purefin.player.preference.TrackPreferencesRepository
import hu.bbara.purefin.core.player.preference.TrackMatcher
import hu.bbara.purefin.core.player.preference.TrackPreferencesRepository
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob

View File

@@ -1,13 +1,13 @@
package hu.bbara.purefin.player.manager
package hu.bbara.purefin.core.player.manager
import android.util.Log
import dagger.hilt.android.scopes.ViewModelScoped
import hu.bbara.purefin.data.LocalMediaUpdater
import hu.bbara.purefin.data.PlaybackProgressReporter
import hu.bbara.purefin.data.PlaybackReportContext
import hu.bbara.purefin.player.model.MetadataState
import hu.bbara.purefin.player.model.PlaybackProgressSnapshot
import hu.bbara.purefin.player.model.PlaybackStateSnapshot
import hu.bbara.purefin.core.data.LocalMediaUpdater
import hu.bbara.purefin.core.data.PlaybackProgressReporter
import hu.bbara.purefin.core.data.PlaybackReportContext
import hu.bbara.purefin.core.player.model.MetadataState
import hu.bbara.purefin.core.player.model.PlaybackProgressSnapshot
import hu.bbara.purefin.core.player.model.PlaybackStateSnapshot
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job

View File

@@ -1,12 +1,12 @@
package hu.bbara.purefin.player.manager
package hu.bbara.purefin.core.player.manager
import androidx.annotation.OptIn
import androidx.media3.common.C
import androidx.media3.common.Format
import androidx.media3.common.Tracks
import androidx.media3.common.util.UnstableApi
import hu.bbara.purefin.player.model.TrackOption
import hu.bbara.purefin.player.model.TrackType
import hu.bbara.purefin.core.player.model.TrackOption
import hu.bbara.purefin.core.player.model.TrackType
import java.util.Locale
import javax.inject.Inject

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.player.model
package hu.bbara.purefin.core.player.model
import hu.bbara.purefin.model.MediaSegment
import hu.bbara.purefin.model.MediaTrackPreferences

View File

@@ -1,6 +1,6 @@
package hu.bbara.purefin.player.model
package hu.bbara.purefin.core.player.model
import hu.bbara.purefin.data.PlaybackReportContext
import hu.bbara.purefin.core.data.PlaybackReportContext
data class MetadataState(
val mediaId: String? = null,

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.player.model
package hu.bbara.purefin.core.player.model
data class PlaybackProgressSnapshot(
val durationMs: Long = 0L,

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.player.model
package hu.bbara.purefin.core.player.model
data class PlaybackStateSnapshot(
val isPlaying: Boolean = false,

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.player.model
package hu.bbara.purefin.core.player.model
data class PlayerUiState(
val isPlaying: Boolean = false,

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.player.model
package hu.bbara.purefin.core.player.model
enum class SegmentStatus {
START,

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.player.module
package hu.bbara.purefin.core.player.module
import androidx.annotation.OptIn
import androidx.media3.common.util.UnstableApi

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.player.module
package hu.bbara.purefin.core.player.module
import android.app.Application
import androidx.annotation.OptIn

View File

@@ -1,9 +1,9 @@
package hu.bbara.purefin.player.preference
package hu.bbara.purefin.core.player.preference
import hu.bbara.purefin.core.player.model.TrackOption
import hu.bbara.purefin.core.player.model.TrackType
import hu.bbara.purefin.model.AudioTrackProperties
import hu.bbara.purefin.model.SubtitleTrackProperties
import hu.bbara.purefin.player.model.TrackOption
import hu.bbara.purefin.player.model.TrackType
import javax.inject.Inject
class TrackMatcher @Inject constructor() {

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.player.preference
package hu.bbara.purefin.core.player.preference
import android.content.Context
import androidx.datastore.core.DataStore

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.player.preference
package hu.bbara.purefin.core.player.preference
import androidx.datastore.core.DataStore
import hu.bbara.purefin.model.AudioTrackProperties

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.player.preference
package hu.bbara.purefin.core.player.preference
import androidx.datastore.core.CorruptionException
import androidx.datastore.core.Serializer

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.player.viewmodel
package hu.bbara.purefin.core.player.viewmodel
enum class ControlsAutoHideBlocker {
PLAYLIST,

View File

@@ -1,19 +1,19 @@
package hu.bbara.purefin.player.viewmodel
package hu.bbara.purefin.core.player.viewmodel
import android.util.Log
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import hu.bbara.purefin.data.LocalMediaRepository
import hu.bbara.purefin.image.ArtworkKind
import hu.bbara.purefin.image.ImageUrlBuilder
import hu.bbara.purefin.core.data.LocalMediaRepository
import hu.bbara.purefin.core.image.ArtworkKind
import hu.bbara.purefin.core.image.ImageUrlBuilder
import hu.bbara.purefin.core.player.manager.PlayerManager
import hu.bbara.purefin.core.player.manager.ProgressManager
import hu.bbara.purefin.core.player.model.PlayerUiState
import hu.bbara.purefin.core.player.model.PlaylistElementUiModel
import hu.bbara.purefin.core.player.model.TrackOption
import hu.bbara.purefin.model.PlayableMedia
import hu.bbara.purefin.player.manager.PlayerManager
import hu.bbara.purefin.player.manager.ProgressManager
import hu.bbara.purefin.player.model.PlayerUiState
import hu.bbara.purefin.player.model.PlaylistElementUiModel
import hu.bbara.purefin.player.model.TrackOption
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableStateFlow

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.player.viewmodel
package hu.bbara.purefin.core.player.viewmodel
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.settings
package hu.bbara.purefin.core.settings
sealed interface SettingOption<T> {
val key: String

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.settings
package hu.bbara.purefin.core.settings
import android.content.Context
import androidx.datastore.core.DataStore

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.settings
package hu.bbara.purefin.core.settings
import androidx.datastore.core.DataStore
import hu.bbara.purefin.model.Settings

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.settings
package hu.bbara.purefin.core.settings
import androidx.datastore.core.CorruptionException
import androidx.datastore.core.Serializer

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.update
package hu.bbara.purefin.core.update
import android.content.Context
import android.content.pm.ApplicationInfo
@@ -6,7 +6,7 @@ import android.content.pm.PackageInfo
import android.content.pm.PackageManager
import android.os.Build
import dagger.hilt.android.qualifiers.ApplicationContext
import hu.bbara.purefin.feature.update.AppVersionProvider
import hu.bbara.purefin.core.feature.update.AppVersionProvider
import javax.inject.Inject
class AndroidAppVersionProvider @Inject constructor(

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.update
package hu.bbara.purefin.core.update
import android.content.ActivityNotFoundException
import android.content.BroadcastReceiver

View File

@@ -1,4 +1,4 @@
package hu.bbara.purefin.update
package hu.bbara.purefin.core.update
import android.app.PendingIntent
import android.content.ActivityNotFoundException
@@ -11,8 +11,8 @@ import android.net.Uri
import android.os.Build
import android.provider.Settings
import dagger.hilt.android.qualifiers.ApplicationContext
import hu.bbara.purefin.feature.update.AppUpdateInfo
import hu.bbara.purefin.feature.update.AppUpdateInstaller
import hu.bbara.purefin.core.feature.update.AppUpdateInfo
import hu.bbara.purefin.core.feature.update.AppUpdateInstaller
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import okhttp3.HttpUrl.Companion.toHttpUrl

View File

@@ -1,11 +1,11 @@
package hu.bbara.purefin.update
package hu.bbara.purefin.core.update
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import hu.bbara.purefin.feature.update.AppUpdateInstaller
import hu.bbara.purefin.feature.update.AppVersionProvider
import hu.bbara.purefin.core.feature.update.AppUpdateInstaller
import hu.bbara.purefin.core.feature.update.AppVersionProvider
@Module
@InstallIn(SingletonComponent::class)

View File

@@ -3,7 +3,6 @@ package hu.bbara.purefin.core.download
import androidx.media3.datasource.DataSource
import androidx.media3.datasource.cache.CacheDataSource
import androidx.media3.datasource.cache.NoOpCacheEvictor
import hu.bbara.purefin.download.DownloadModuleFactories
import org.junit.Assert.assertNull
import org.junit.Assert.assertSame
import org.junit.Assert.assertTrue

View File

@@ -1,10 +1,5 @@
package hu.bbara.purefin.core.navigation
import hu.bbara.purefin.navigation.EpisodeDto
import hu.bbara.purefin.navigation.LibraryDto
import hu.bbara.purefin.navigation.MovieDto
import hu.bbara.purefin.navigation.Route
import hu.bbara.purefin.navigation.SeriesDto
import java.util.UUID
import kotlinx.serialization.json.Json
import org.junit.Assert.assertEquals

View File

@@ -1,8 +1,5 @@
package hu.bbara.purefin.core.player.viewmodel
import hu.bbara.purefin.player.viewmodel.ControlsAutoHideBlocker
import hu.bbara.purefin.player.viewmodel.ControlsAutoHideCommand
import hu.bbara.purefin.player.viewmodel.ControlsAutoHidePolicy
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Test