Merge anilist backend

This commit is contained in:
len
2016-09-18 11:50:52 +02:00
parent 08e26aa30d
commit cb92143613
10 changed files with 440 additions and 14 deletions

View File

@@ -0,0 +1,49 @@
package eu.kanade.tachiyomi.ui.setting
import android.content.Intent
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.Gravity.CENTER
import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
import android.widget.FrameLayout
import android.widget.ProgressBar
import eu.kanade.tachiyomi.data.mangasync.MangaSyncManager
import rx.android.schedulers.AndroidSchedulers
import rx.schedulers.Schedulers
import uy.kohesive.injekt.injectLazy
class AnilistLoginActivity : AppCompatActivity() {
private val syncManager: MangaSyncManager by injectLazy()
override fun onCreate(savedState: Bundle?) {
super.onCreate(savedState)
val view = ProgressBar(this)
setContentView(view, FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT, CENTER))
val code = intent.data?.getQueryParameter("code")
if (code != null) {
syncManager.aniList.login(code)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
returnToSettings()
}, { error ->
returnToSettings()
})
} else {
syncManager.aniList.logout()
returnToSettings()
}
}
private fun returnToSettings() {
finish()
val intent = Intent(this, SettingsActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
startActivity(intent)
}
}

View File

@@ -6,6 +6,7 @@ import android.support.v7.preference.PreferenceCategory
import android.support.v7.preference.XpPreferenceFragment
import android.view.View
import eu.kanade.tachiyomi.data.mangasync.MangaSyncManager
import eu.kanade.tachiyomi.data.mangasync.MangaSyncService
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.widget.preference.LoginPreference
import eu.kanade.tachiyomi.widget.preference.MangaSyncLoginDialog
@@ -32,30 +33,56 @@ class SettingsSyncFragment : SettingsFragment() {
override fun onViewCreated(view: View, savedState: Bundle?) {
super.onViewCreated(view, savedState)
val themedContext = preferenceManager.context
registerService(syncManager.myAnimeList)
for (sync in syncManager.services) {
val pref = LoginPreference(themedContext).apply {
key = preferences.keys.syncUsername(sync.id)
title = sync.name
// registerService(syncManager.aniList) {
// val intent = CustomTabsIntent.Builder()
// .setToolbarColor(activity.theme.getResourceColor(R.attr.colorPrimary))
// .build()
// intent.intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)
// intent.launchUrl(activity, AnilistApi.authUrl())
// }
}
setOnPreferenceClickListener {
val fragment = MangaSyncLoginDialog.newInstance(sync)
fragment.setTargetFragment(this@SettingsSyncFragment, SYNC_CHANGE_REQUEST)
fragment.show(fragmentManager, null)
true
}
private fun <T : MangaSyncService> registerService(
service: T,
onPreferenceClick: (T) -> Unit = defaultOnPreferenceClick) {
LoginPreference(preferenceManager.context).apply {
key = preferences.keys.syncUsername(service.id)
title = service.name
setOnPreferenceClickListener {
onPreferenceClick(service)
true
}
syncCategory.addPreference(pref)
syncCategory.addPreference(this)
}
}
private val defaultOnPreferenceClick: (MangaSyncService) -> Unit
get() = {
val fragment = MangaSyncLoginDialog.newInstance(it)
fragment.setTargetFragment(this, SYNC_CHANGE_REQUEST)
fragment.show(fragmentManager, null)
}
override fun onResume() {
super.onResume()
// Manually refresh anilist holder
// updatePreference(syncManager.aniList.id)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == SYNC_CHANGE_REQUEST) {
val pref = findPreference(preferences.keys.syncUsername(resultCode)) as? LoginPreference
pref?.notifyChanged()
updatePreference(resultCode)
}
}
private fun updatePreference(id: Int) {
val pref = findPreference(preferences.keys.syncUsername(id)) as? LoginPreference
pref?.notifyChanged()
}
}