diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/source/online/OnlineSource.kt b/app/src/main/java/eu/kanade/tachiyomi/data/source/online/OnlineSource.kt index 8daa87703..4df59bc37 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/source/online/OnlineSource.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/source/online/OnlineSource.kt @@ -192,7 +192,7 @@ abstract class OnlineSource(context: Context) : Source { * * @param manga the manga to be updated. */ - open protected fun mangaDetailsRequest(manga: Manga): Request { + open fun mangaDetailsRequest(manga: Manga): Request { return GET(baseUrl + manga.url, headers) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoFragment.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoFragment.kt index 9bc40b823..6ab67a923 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoFragment.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoFragment.kt @@ -1,5 +1,6 @@ package eu.kanade.tachiyomi.ui.manga.info +import android.content.Intent import android.net.Uri import android.os.Bundle import android.support.customtabs.CustomTabsIntent @@ -59,6 +60,7 @@ class MangaInfoFragment : BaseRxFragment() { override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.action_open_in_browser -> openInBrowser() + R.id.action_share -> shareManga() else -> return super.onOptionsItemSelected(item) } return true @@ -158,6 +160,24 @@ class MangaInfoFragment : BaseRxFragment() { } } + /** + * Called to run Intent with [Intent.ACTION_SEND], which show share dialog. + */ + private fun shareManga() { + val source = presenter.source as? OnlineSource ?: return + try { + val url = source.mangaDetailsRequest(presenter.manga).url().toString() + val sharingIntent = Intent(Intent.ACTION_SEND).apply { + type = "text/plain" + putExtra(android.content.Intent.EXTRA_SUBJECT, presenter.manga.title) + putExtra(android.content.Intent.EXTRA_TEXT, resources.getString(R.string.share_text, presenter.manga.title, url)) + } + startActivity(Intent.createChooser(sharingIntent, resources.getText(R.string.share_subject))) + } catch (e: Exception) { + context.toast(e.message) + } + } + /** * Update FAB with correct drawable. * diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoPresenter.kt index 3c54c6ff8..35941b3d0 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoPresenter.kt @@ -128,5 +128,4 @@ class MangaInfoPresenter : BasePresenter() { private fun refreshManga() { start(GET_MANGA) } - } diff --git a/app/src/main/res/drawable/ic_share_white_24dp.xml b/app/src/main/res/drawable/ic_share_white_24dp.xml new file mode 100644 index 000000000..c5027c659 --- /dev/null +++ b/app/src/main/res/drawable/ic_share_white_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/menu/manga_info.xml b/app/src/main/res/menu/manga_info.xml index 8cb84e382..e9aa77c9f 100644 --- a/app/src/main/res/menu/manga_info.xml +++ b/app/src/main/res/menu/manga_info.xml @@ -2,6 +2,12 @@ + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1447866d9..d77e2da59 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -56,6 +56,7 @@ Cancel Sort Install + Share Deleting… @@ -222,6 +223,8 @@ Status Source Genres + Share… + Check out %1$s! at %2$s Chapters