mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-05-17 07:21:58 +00:00
142 lines
6.4 KiB
Kotlin
142 lines
6.4 KiB
Kotlin
package com.nuvio.app
|
|
|
|
import android.content.Intent
|
|
import android.content.res.Configuration
|
|
import android.os.Bundle
|
|
import androidx.activity.ComponentActivity
|
|
import androidx.activity.compose.setContent
|
|
import androidx.activity.enableEdgeToEdge
|
|
import androidx.activity.SystemBarStyle
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
|
import com.nuvio.app.core.auth.AuthStorage
|
|
import com.nuvio.app.core.deeplink.handleAppUrl
|
|
import com.nuvio.app.core.storage.PlatformLocalAccountDataCleaner
|
|
import com.nuvio.app.features.addons.AddonStorage
|
|
import com.nuvio.app.features.collection.CollectionStorage
|
|
import com.nuvio.app.features.downloads.DownloadsLiveStatusPlatform
|
|
import com.nuvio.app.features.downloads.DownloadsPlatformDownloader
|
|
import com.nuvio.app.features.downloads.DownloadsStorage
|
|
import com.nuvio.app.features.library.LibraryStorage
|
|
import com.nuvio.app.features.details.MetaScreenSettingsStorage
|
|
import com.nuvio.app.features.home.HomeCatalogSettingsStorage
|
|
import com.nuvio.app.features.mdblist.MdbListSettingsStorage
|
|
import com.nuvio.app.features.notifications.EpisodeReleaseNotificationPlatform
|
|
import com.nuvio.app.features.notifications.EpisodeReleaseNotificationsStorage
|
|
import com.nuvio.app.features.player.PlayerSettingsStorage
|
|
import com.nuvio.app.features.player.PlayerPictureInPictureManager
|
|
import com.nuvio.app.features.plugins.PluginStorage
|
|
import com.nuvio.app.features.profiles.AvatarStorage
|
|
import com.nuvio.app.features.profiles.ProfilePinCacheStorage
|
|
import com.nuvio.app.features.profiles.ProfileStorage
|
|
import com.nuvio.app.features.details.SeasonViewModeStorage
|
|
import com.nuvio.app.features.search.SearchHistoryStorage
|
|
import com.nuvio.app.features.settings.ThemeSettingsStorage
|
|
import com.nuvio.app.features.trakt.TraktAuthStorage
|
|
import com.nuvio.app.features.trakt.TraktCommentsStorage
|
|
import com.nuvio.app.features.trakt.TraktLibraryStorage
|
|
import com.nuvio.app.features.tmdb.TmdbSettingsStorage
|
|
import com.nuvio.app.features.updater.AndroidAppUpdaterPlatform
|
|
import com.nuvio.app.core.ui.PosterCardStyleStorage
|
|
import com.nuvio.app.features.watched.WatchedStorage
|
|
import com.nuvio.app.features.streams.StreamLinkCacheStorage
|
|
import com.nuvio.app.features.watchprogress.ContinueWatchingEnrichmentStorage
|
|
import com.nuvio.app.features.watchprogress.ContinueWatchingPreferencesStorage
|
|
import com.nuvio.app.features.watchprogress.ResumePromptStorage
|
|
import com.nuvio.app.features.watchprogress.WatchProgressStorage
|
|
|
|
class MainActivity : AppCompatActivity() {
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
installSplashScreen()
|
|
enableEdgeToEdge(
|
|
statusBarStyle = SystemBarStyle.dark(
|
|
scrim = android.graphics.Color.TRANSPARENT,
|
|
),
|
|
navigationBarStyle = SystemBarStyle.dark(
|
|
scrim = 0xFF020404.toInt(),
|
|
),
|
|
)
|
|
ThemeSettingsStorage.initialize(applicationContext)
|
|
super.onCreate(savedInstanceState)
|
|
window.setBackgroundDrawableResource(R.color.nuvio_background)
|
|
AddonStorage.initialize(applicationContext)
|
|
AuthStorage.initialize(applicationContext)
|
|
LibraryStorage.initialize(applicationContext)
|
|
WatchedStorage.initialize(applicationContext)
|
|
MetaScreenSettingsStorage.initialize(applicationContext)
|
|
HomeCatalogSettingsStorage.initialize(applicationContext)
|
|
PlayerSettingsStorage.initialize(applicationContext)
|
|
ProfileStorage.initialize(applicationContext)
|
|
AvatarStorage.initialize(applicationContext)
|
|
ProfilePinCacheStorage.initialize(applicationContext)
|
|
SearchHistoryStorage.initialize(applicationContext)
|
|
SeasonViewModeStorage.initialize(applicationContext)
|
|
PosterCardStyleStorage.initialize(applicationContext)
|
|
TmdbSettingsStorage.initialize(applicationContext)
|
|
MdbListSettingsStorage.initialize(applicationContext)
|
|
TraktAuthStorage.initialize(applicationContext)
|
|
TraktCommentsStorage.initialize(applicationContext)
|
|
TraktLibraryStorage.initialize(applicationContext)
|
|
ContinueWatchingPreferencesStorage.initialize(applicationContext)
|
|
ResumePromptStorage.initialize(applicationContext)
|
|
ContinueWatchingEnrichmentStorage.initialize(applicationContext)
|
|
EpisodeReleaseNotificationsStorage.initialize(applicationContext)
|
|
WatchProgressStorage.initialize(applicationContext)
|
|
StreamLinkCacheStorage.initialize(applicationContext)
|
|
PluginStorage.initialize(applicationContext)
|
|
CollectionStorage.initialize(applicationContext)
|
|
DownloadsStorage.initialize(applicationContext)
|
|
DownloadsPlatformDownloader.initialize(applicationContext)
|
|
DownloadsLiveStatusPlatform.initialize(applicationContext)
|
|
AndroidAppUpdaterPlatform.initialize(applicationContext)
|
|
PlatformLocalAccountDataCleaner.initialize(applicationContext)
|
|
EpisodeReleaseNotificationPlatform.initialize(applicationContext)
|
|
EpisodeReleaseNotificationPlatform.bindActivity(this)
|
|
handleIncomingAppIntent(intent)
|
|
|
|
setContent {
|
|
App()
|
|
}
|
|
}
|
|
|
|
override fun onNewIntent(intent: Intent) {
|
|
super.onNewIntent(intent)
|
|
setIntent(intent)
|
|
handleIncomingAppIntent(intent)
|
|
}
|
|
|
|
override fun onUserLeaveHint() {
|
|
super.onUserLeaveHint()
|
|
PlayerPictureInPictureManager.onUserLeaveHint(this)
|
|
}
|
|
|
|
override fun onPictureInPictureModeChanged(
|
|
isInPictureInPictureMode: Boolean,
|
|
newConfig: Configuration,
|
|
) {
|
|
super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig)
|
|
PlayerPictureInPictureManager.onPictureInPictureModeChanged(this, isInPictureInPictureMode)
|
|
}
|
|
|
|
override fun onDestroy() {
|
|
EpisodeReleaseNotificationPlatform.unbindActivity(this)
|
|
super.onDestroy()
|
|
}
|
|
|
|
override fun onRequestPermissionsResult(
|
|
requestCode: Int,
|
|
permissions: Array<String>,
|
|
grantResults: IntArray,
|
|
) {
|
|
if (EpisodeReleaseNotificationPlatform.handlePermissionRequestResult(requestCode, grantResults)) {
|
|
return
|
|
}
|
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
|
|
}
|
|
|
|
private fun handleIncomingAppIntent(intent: Intent?) {
|
|
val appUrl = intent?.dataString?.trim().orEmpty()
|
|
if (appUrl.isBlank()) return
|
|
handleAppUrl(appUrl)
|
|
}
|
|
}
|