BUG: I FIX
This commit is contained in:
parent
3bd9dc031a
commit
d81391f593
10 changed files with 53 additions and 10 deletions
|
@ -120,7 +120,7 @@ dependencies {
|
||||||
implementation 'com.squareup.okhttp3:okhttp-dnsoverhttps'
|
implementation 'com.squareup.okhttp3:okhttp-dnsoverhttps'
|
||||||
implementation 'com.squareup.okio:okio:3.7.0'
|
implementation 'com.squareup.okio:okio:3.7.0'
|
||||||
implementation 'ch.acra:acra-http:5.11.3'
|
implementation 'ch.acra:acra-http:5.11.3'
|
||||||
implementation 'org.jsoup:jsoup:1.17.2'
|
implementation 'org.jsoup:jsoup:1.15.4'
|
||||||
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json-okio:1.6.2'
|
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json-okio:1.6.2'
|
||||||
implementation 'com.jakewharton.rxrelay:rxrelay:1.2.0'
|
implementation 'com.jakewharton.rxrelay:rxrelay:1.2.0'
|
||||||
implementation 'com.github.tachiyomiorg:unifile:17bec43'
|
implementation 'com.github.tachiyomiorg:unifile:17bec43'
|
||||||
|
|
|
@ -309,7 +309,16 @@ class MangaDownloaderService : Service() {
|
||||||
|
|
||||||
val jsonString = gson.toJson(media)
|
val jsonString = gson.toJson(media)
|
||||||
withContext(Dispatchers.Main) {
|
withContext(Dispatchers.Main) {
|
||||||
|
try {
|
||||||
file.writeText(jsonString)
|
file.writeText(jsonString)
|
||||||
|
} catch (e: android.system.ErrnoException) {
|
||||||
|
e.printStackTrace()
|
||||||
|
Toast.makeText(
|
||||||
|
this@MangaDownloaderService,
|
||||||
|
"Error while saving: ${e.localizedMessage}",
|
||||||
|
Toast.LENGTH_LONG
|
||||||
|
).show()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,6 +118,19 @@ data class Media(
|
||||||
fun mangaName() = if (countryOfOrigin != "JP") mainName() else nameRomaji
|
fun mangaName() = if (countryOfOrigin != "JP") mainName() else nameRomaji
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun emptyMedia() = Media(
|
||||||
|
id = 0,
|
||||||
|
name = "No media found",
|
||||||
|
nameRomaji = "No media found",
|
||||||
|
userPreferredName = "",
|
||||||
|
isAdult = false,
|
||||||
|
isFav = false,
|
||||||
|
isListPrivate = false,
|
||||||
|
userScore = 0,
|
||||||
|
userStatus = "",
|
||||||
|
format = "",
|
||||||
|
)
|
||||||
|
|
||||||
object MediaSingleton {
|
object MediaSingleton {
|
||||||
var media: Media? = null
|
var media: Media? = null
|
||||||
var bitmap: Bitmap? = null
|
var bitmap: Bitmap? = null
|
||||||
|
|
|
@ -72,12 +72,16 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
|
||||||
|
|
||||||
@SuppressLint("SetTextI18n", "ClickableViewAccessibility")
|
@SuppressLint("SetTextI18n", "ClickableViewAccessibility")
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
LangSet.setLocale(this)
|
super.onCreate(savedInstanceState)
|
||||||
var media: Media = intent.getSerialized("media") ?: mediaSingleton ?: return
|
var media: Media = intent.getSerialized("media") ?: mediaSingleton ?: emptyMedia()
|
||||||
|
if (media.name == "No media found") {
|
||||||
|
snackString(media.name)
|
||||||
|
onBackPressedDispatcher.onBackPressed()
|
||||||
|
return
|
||||||
|
}
|
||||||
mediaSingleton = null
|
mediaSingleton = null
|
||||||
ThemeManager(this).applyTheme(MediaSingleton.bitmap)
|
ThemeManager(this).applyTheme(MediaSingleton.bitmap)
|
||||||
MediaSingleton.bitmap = null
|
MediaSingleton.bitmap = null
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
|
|
||||||
binding = ActivityMediaBinding.inflate(layoutInflater)
|
binding = ActivityMediaBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
|
@ -159,7 +159,7 @@ class SearchActivity : AppCompatActivity() {
|
||||||
fun search() {
|
fun search() {
|
||||||
val size = model.searchResults.results.size
|
val size = model.searchResults.results.size
|
||||||
model.searchResults.results.clear()
|
model.searchResults.results.clear()
|
||||||
runOnUiThread {
|
binding.searchRecyclerView.post {
|
||||||
mediaAdaptor.notifyItemRangeRemoved(0, size)
|
mediaAdaptor.notifyItemRangeRemoved(0, size)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@ import ani.dantotsu.subcriptions.Notifications.Companion.openSettings
|
||||||
import ani.dantotsu.subcriptions.Subscription.Companion.getChannelId
|
import ani.dantotsu.subcriptions.Subscription.Companion.getChannelId
|
||||||
import com.google.android.material.chip.Chip
|
import com.google.android.material.chip.Chip
|
||||||
import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource
|
import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource
|
||||||
|
import eu.kanade.tachiyomi.util.system.WebViewUtil
|
||||||
import kotlinx.coroutines.MainScope
|
import kotlinx.coroutines.MainScope
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
|
@ -245,6 +246,9 @@ class AnimeWatchAdapter(
|
||||||
run = true
|
run = true
|
||||||
}
|
}
|
||||||
dialogBinding.animeWebviewContainer.setOnClickListener {
|
dialogBinding.animeWebviewContainer.setOnClickListener {
|
||||||
|
if (!WebViewUtil.supportsWebView(fragment.requireContext())) {
|
||||||
|
toast("WebView not installed")
|
||||||
|
}
|
||||||
//start CookieCatcher activity
|
//start CookieCatcher activity
|
||||||
if (watchSources.names.isNotEmpty() && source in 0 until watchSources.names.size) {
|
if (watchSources.names.isNotEmpty() && source in 0 until watchSources.names.size) {
|
||||||
val sourceAHH = watchSources[source] as? DynamicAnimeParser
|
val sourceAHH = watchSources[source] as? DynamicAnimeParser
|
||||||
|
|
|
@ -1806,6 +1806,7 @@ class ExoplayerView : AppCompatActivity(), Player.Listener, SessionAvailabilityL
|
||||||
}
|
}
|
||||||
|
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
|
Glide.with(this).clear(exoPlay)
|
||||||
finishAndRemoveTask()
|
finishAndRemoveTask()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1934,6 +1935,8 @@ class ExoplayerView : AppCompatActivity(), Player.Listener, SessionAvailabilityL
|
||||||
snackString("Cast API not available")
|
snackString("Cast API not available")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
//make sure mediaItem is initialized and castPlayer is not null
|
||||||
|
if (!this::mediaItem.isInitialized || castPlayer == null) return
|
||||||
castPlayer?.setMediaItem(mediaItem)
|
castPlayer?.setMediaItem(mediaItem)
|
||||||
castPlayer?.prepare()
|
castPlayer?.prepare()
|
||||||
playerView.player = castPlayer
|
playerView.player = castPlayer
|
||||||
|
|
|
@ -32,6 +32,7 @@ import ani.dantotsu.subcriptions.Notifications.Companion.openSettings
|
||||||
import ani.dantotsu.subcriptions.Subscription.Companion.getChannelId
|
import ani.dantotsu.subcriptions.Subscription.Companion.getChannelId
|
||||||
import com.google.android.material.chip.Chip
|
import com.google.android.material.chip.Chip
|
||||||
import eu.kanade.tachiyomi.source.online.HttpSource
|
import eu.kanade.tachiyomi.source.online.HttpSource
|
||||||
|
import eu.kanade.tachiyomi.util.system.WebViewUtil
|
||||||
import kotlinx.coroutines.MainScope
|
import kotlinx.coroutines.MainScope
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
|
@ -203,6 +204,9 @@ class MangaReadAdapter(
|
||||||
run = true
|
run = true
|
||||||
}
|
}
|
||||||
dialogBinding.animeWebviewContainer.setOnClickListener {
|
dialogBinding.animeWebviewContainer.setOnClickListener {
|
||||||
|
if (!WebViewUtil.supportsWebView(fragment.requireContext())) {
|
||||||
|
toast("WebView not installed")
|
||||||
|
}
|
||||||
//start CookieCatcher activity
|
//start CookieCatcher activity
|
||||||
if (mangaReadSources.names.isNotEmpty() && source in 0 until mangaReadSources.names.size) {
|
if (mangaReadSources.names.isNotEmpty() && source in 0 until mangaReadSources.names.size) {
|
||||||
val sourceAHH = mangaReadSources[source] as? DynamicMangaParser
|
val sourceAHH = mangaReadSources[source] as? DynamicMangaParser
|
||||||
|
|
|
@ -10,6 +10,7 @@ import androidx.preference.EditTextPreference
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
import androidx.preference.forEach
|
import androidx.preference.forEach
|
||||||
import androidx.preference.getOnBindEditTextListener
|
import androidx.preference.getOnBindEditTextListener
|
||||||
|
import ani.dantotsu.snackString
|
||||||
import eu.kanade.tachiyomi.PreferenceScreen
|
import eu.kanade.tachiyomi.PreferenceScreen
|
||||||
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
|
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
|
||||||
import eu.kanade.tachiyomi.data.preference.SharedPreferencesDataStore
|
import eu.kanade.tachiyomi.data.preference.SharedPreferencesDataStore
|
||||||
|
@ -21,7 +22,12 @@ import uy.kohesive.injekt.api.get
|
||||||
|
|
||||||
class AnimeSourcePreferencesFragment : PreferenceFragmentCompat() {
|
class AnimeSourcePreferencesFragment : PreferenceFragmentCompat() {
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
preferenceScreen = populateAnimePreferenceScreen()
|
preferenceScreen = try {
|
||||||
|
populateAnimePreferenceScreen()
|
||||||
|
} catch (e: Exception) {
|
||||||
|
snackString(e.message ?: "Unknown error")
|
||||||
|
preferenceManager.createPreferenceScreen(requireContext())
|
||||||
|
}
|
||||||
//set background color
|
//set background color
|
||||||
val color = TypedValue()
|
val color = TypedValue()
|
||||||
requireContext().theme.resolveAttribute(
|
requireContext().theme.resolveAttribute(
|
||||||
|
@ -42,8 +48,8 @@ class AnimeSourcePreferencesFragment : PreferenceFragmentCompat() {
|
||||||
|
|
||||||
private fun populateAnimePreferenceScreen(): PreferenceScreen {
|
private fun populateAnimePreferenceScreen(): PreferenceScreen {
|
||||||
val sourceId = requireArguments().getLong(SOURCE_ID)
|
val sourceId = requireArguments().getLong(SOURCE_ID)
|
||||||
val source = Injekt.get<AnimeSourceManager>().get(sourceId)!!
|
val source = Injekt.get<AnimeSourceManager>().get(sourceId) as? ConfigurableAnimeSource
|
||||||
check(source is ConfigurableAnimeSource)
|
?: error("Source with id: $sourceId not found!")
|
||||||
val sharedPreferences =
|
val sharedPreferences =
|
||||||
requireContext().getSharedPreferences(source.getPreferenceKey(), Context.MODE_PRIVATE)
|
requireContext().getSharedPreferences(source.getPreferenceKey(), Context.MODE_PRIVATE)
|
||||||
val dataStore = SharedPreferencesDataStore(sharedPreferences)
|
val dataStore = SharedPreferencesDataStore(sharedPreferences)
|
||||||
|
|
|
@ -7,7 +7,7 @@ import okhttp3.HttpUrl
|
||||||
|
|
||||||
class AndroidCookieJar : CookieJar {
|
class AndroidCookieJar : CookieJar {
|
||||||
|
|
||||||
val manager = CookieManager.getInstance()
|
val manager: CookieManager = CookieManager.getInstance()
|
||||||
|
|
||||||
override fun saveFromResponse(url: HttpUrl, cookies: List<Cookie>) {
|
override fun saveFromResponse(url: HttpUrl, cookies: List<Cookie>) {
|
||||||
val urlString = url.toString()
|
val urlString = url.toString()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue