aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/net/lacolaco/smileessence/IntentRouter.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/net/lacolaco/smileessence/IntentRouter.kt')
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/IntentRouter.kt138
1 files changed, 0 insertions, 138 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/IntentRouter.kt b/app/src/main/java/net/lacolaco/smileessence/IntentRouter.kt
deleted file mode 100644
index 2c202f37..00000000
--- a/app/src/main/java/net/lacolaco/smileessence/IntentRouter.kt
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2012-2014 lacolaco.net
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package net.lacolaco.smileessence
-
-import android.app.Activity
-import android.content.Intent
-import android.net.Uri
-import android.os.Bundle
-import android.text.TextUtils
-import android.widget.Toast
-import net.lacolaco.smileessence.activity.MainActivity
-import net.lacolaco.smileessence.command.CommandOpenUserDetail
-import net.lacolaco.smileessence.entity.Tweet
-import net.lacolaco.smileessence.logging.Logger
-import net.lacolaco.smileessence.util.UIHandler
-import net.lacolaco.smileessence.view.DialogHelper
-import net.lacolaco.smileessence.view.dialog.StatusDetailDialogFragment
-
-import java.util.regex.Matcher
-import java.util.regex.Pattern
-
-object IntentRouter {
-
- // ------------------------------ FIELDS ------------------------------
-
- private val TWITTER_HOST = "twitter.com"
- private val TWITTER_STATUS_PATTERN = Pattern.compile("\\A(?:/#!)?/(?:\\w{1,15})/status(?:es)?/(\\d+)\\z", Pattern.CASE_INSENSITIVE)
- private val TWITTER_USER_PATTERN = Pattern.compile("\\A(?:/#!)?/(\\w{1,15})/?\\z", Pattern.CASE_INSENSITIVE)
- private val TWITTER_POST_PATTERN = Pattern.compile("\\A/(intent/tweet|share)\\z", Pattern.CASE_INSENSITIVE)
-
- // -------------------------- STATIC METHODS --------------------------
-
- fun onNewIntent(activity: MainActivity, intent: Intent) {
- Logger.debug("onNewIntent")
- val uri = intent.data
- if (uri != null) {
- onUriIntent(activity, uri)
- } else if (intent.action != null) {
- when (intent.action) {
- Intent.ACTION_SEND -> {
- if ("text/plain" == intent.type) {
- val extra = intent.extras
- if (extra != null) {
- val text = getText(extra)
- openPostPage(activity, text)
- }
- } else if (intent.type.startsWith("image/")) {
- val imageUri = intent.getParcelableExtra<Uri>(Intent.EXTRA_STREAM)
- openPostPageWithImage(activity, imageUri)
- }
- }
- }
- }
- }
-
- private fun onUriIntent(activity: MainActivity, uri: Uri) {
- Logger.debug(uri.toString())
-
- if (uri.host == TWITTER_HOST) {
- val postMatcher = TWITTER_POST_PATTERN.matcher(uri.path) // /share and /intent/tweet: don't accept status parameter
- if (postMatcher.find()) {
- openPostPage(activity, extractText(uri))
- return
- }
- val statusMatcher = TWITTER_STATUS_PATTERN.matcher(uri.path)
- if (statusMatcher.find()) {
- Tweet.fetchTask(java.lang.Long.parseLong(statusMatcher.group(1)), activity.world.account)
- .onDoneUI { tweet -> DialogHelper.showDialog(activity, StatusDetailDialogFragment.newInstance(tweet)) }
- .onFail { x -> Application.toast(R.string.error_intent_status_cannot_load) }
- .execute()
- return
- }
- val userMatcher = TWITTER_USER_PATTERN.matcher(uri.path)
- if (userMatcher.find()) {
- showUserDialog(activity, userMatcher.group(1))
- }
- }
- }
-
- private fun getText(extra: Bundle): String {
- val builder = StringBuilder()
- if (!TextUtils.isEmpty(extra.getCharSequence(Intent.EXTRA_SUBJECT))) {
- builder.append(extra.getCharSequence(Intent.EXTRA_SUBJECT)).append(" ")
- }
- builder.append(extra.getCharSequence(Intent.EXTRA_TEXT))
- return builder.toString()
- }
-
- private fun extractText(uri: Uri): String {
- var result = ""
- val text = uri.getQueryParameter("text")
- val url = uri.getQueryParameter("url")
- val via = uri.getQueryParameter("via")
- val hashtags = uri.getQueryParameter("hashtags")
-
- if (!TextUtils.isEmpty(text)) result += text
- if (!TextUtils.isEmpty(url)) result += " " + url
- if (!TextUtils.isEmpty(hashtags)) result += " " + hashtags.trim { it <= ' ' }.replace(",".toRegex(), " #")
- if (!TextUtils.isEmpty(via)) result += " via @" + via
-
- return result
- }
-
- private fun showUserDialog(activity: MainActivity, screenName: String) {
- val openUserDetail = CommandOpenUserDetail(activity, screenName)
- openUserDetail.execute()
- }
-
- private fun openPostPage(activity: MainActivity, str: String) {
- UIHandler().post { activity.world.postState.beginTransaction().setText(str).commitWithOpen(activity) }
- }
-
- private fun openPostPageWithImage(activity: MainActivity, imageUri: Uri) {
- UIHandler().post { activity.openPostPageWithImage(imageUri) }
- }
-}