diff --git a/app/build.gradle b/app/build.gradle index 013b45ae..71530586 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ android { minSdkVersion 16 targetSdkVersion 28 versionCode 1 - versionName '1.2.2' + versionName '1.3' vectorDrawables.useSupportLibrary = true } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 07a320a0..ddab597e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -33,11 +33,6 @@ android:host="*.twitter.com" android:scheme="https" /> - - diff --git a/app/src/main/java/org/nuclearfog/twidda/MainActivity.java b/app/src/main/java/org/nuclearfog/twidda/MainActivity.java index ebae38bb..b0052783 100644 --- a/app/src/main/java/org/nuclearfog/twidda/MainActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/MainActivity.java @@ -112,8 +112,8 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener @Override - protected void onResume() { - super.onResume(); + protected void onStart() { + super.onStart(); if (!settings.getLogin()) { Intent i = new Intent(this, LoginPage.class); startActivityForResult(i, LOGIN); @@ -146,14 +146,14 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener @Override - protected void onPause() { + protected void onStop() { if (home != null && home.getStatus() == RUNNING) { home.cancel(true); } if (mBrowser != null && mBrowser.getStatus() == RUNNING) { mBrowser.cancel(true); } - super.onPause(); + super.onStop(); } diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/LinkBrowser.java b/app/src/main/java/org/nuclearfog/twidda/backend/LinkBrowser.java index 00edadb2..f27a9d7f 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/LinkBrowser.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/LinkBrowser.java @@ -15,10 +15,8 @@ import android.widget.Toast; import org.nuclearfog.twidda.MainActivity; import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.backend.items.Tweet; -import org.nuclearfog.twidda.backend.items.TwitterUser; import org.nuclearfog.twidda.database.DatabaseAdapter; import org.nuclearfog.twidda.window.TweetDetail; -import org.nuclearfog.twidda.window.UserProfile; import java.lang.ref.WeakReference; import java.util.regex.Matcher; @@ -26,22 +24,15 @@ import java.util.regex.Pattern; import twitter4j.TwitterException; -public class LinkBrowser extends AsyncTask { - - private static final int NO_MATCH = 0; - private static final int GET_USER = 1; - private static final int GET_TWEET = 2; - private static final int FAILURE = 3; +public class LinkBrowser extends AsyncTask { private WeakReference ui; private TwitterEngine mTwitter; private DatabaseAdapter mData; - private TwitterUser user; private Tweet tweet; private LayoutInflater inflater; private Dialog popup; - - private String errMsg = ""; + private String errMsg; public LinkBrowser(MainActivity context) { ui = new WeakReference<>(context); @@ -82,78 +73,61 @@ public class LinkBrowser extends AsyncTask { @Override - protected Integer doInBackground(Uri... links) { + protected Void doInBackground(Uri... links) { try { String path = links[0].getPath(); if (path != null) { + Pattern linkPattern = Pattern.compile("\\/@?[\\w_]+\\/status\\/\\d{1,20}"); + Matcher linkMatch = linkPattern.matcher(path); + if (linkMatch.matches()) { + Pattern idPattern = Pattern.compile("\\d{1,20}"); + Matcher idMatcher = idPattern.matcher(path); - Pattern pattern = Pattern.compile("[^\\/\\?]+"); - Matcher matcher = pattern.matcher(path); + if (idMatcher.find()) { + int start = idMatcher.start(); + int end = idMatcher.end(); + String idString = path.substring(start, end); + long tweetId = Long.parseLong(idString); - if (matcher.find()) { - int start = matcher.start(); - int end = matcher.end(); - if (!matcher.find()) { - String username = path.substring(start, end); - user = mTwitter.getUser(username); - mData.storeUser(user); - return GET_USER; + tweet = mData.getStatus(tweetId); + if (tweet == null) + tweet = mTwitter.getStatus(tweetId); } } - if (matcher.find()) { - int start = matcher.start(); - int end = matcher.end(); - String id = path.substring(start, end); - long tweetId = Long.parseLong(id); - tweet = mTwitter.getStatus(tweetId); - return GET_TWEET; - } } } catch (TwitterException err) { errMsg = err.getErrorMessage(); - return FAILURE; } catch (Exception err) { Log.e("LinkBrowser", err.getMessage()); - return FAILURE; } - return NO_MATCH; + return null; } @Override - protected void onPostExecute(Integer mode) { + protected void onPostExecute(Void mode) { if (ui.get() == null) return; popup.dismiss(); - switch (mode) { - case GET_TWEET: - Intent tweetActivity = new Intent(ui.get(), TweetDetail.class); - tweetActivity.putExtra("username", tweet.getUser().getScreenname()); - tweetActivity.putExtra("userID", tweet.getUser().getId()); - tweetActivity.putExtra("tweetID", tweet.getId()); - ui.get().startActivity(tweetActivity); - break; - - case GET_USER: - Intent userActivity = new Intent(ui.get(), UserProfile.class); - userActivity.putExtra("username", user.getScreenname()); - userActivity.putExtra("userID", user.getId()); - ui.get().startActivity(userActivity); - break; - - case FAILURE: - if (errMsg.isEmpty()) { - Toast.makeText(ui.get(), R.string.site_load_failure, Toast.LENGTH_LONG).show(); - } else { - Toast.makeText(ui.get(), errMsg, Toast.LENGTH_LONG).show(); - } - break; + if (tweet != null) { + Intent tweetActivity = new Intent(ui.get(), TweetDetail.class); + tweetActivity.putExtra("username", tweet.getUser().getScreenname()); + tweetActivity.putExtra("userID", tweet.getUser().getId()); + tweetActivity.putExtra("tweetID", tweet.getId()); + ui.get().startActivity(tweetActivity); + } else { + if (errMsg == null) { + Toast.makeText(ui.get(), R.string.site_load_failure, Toast.LENGTH_LONG).show(); + } else { + Toast.makeText(ui.get(), errMsg, Toast.LENGTH_LONG).show(); + } } } + @Override - protected void onCancelled(Integer i) { + protected void onCancelled(Void v) { popup.dismiss(); } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/window/TweetDetail.java b/app/src/main/java/org/nuclearfog/twidda/window/TweetDetail.java index 36c7b4c8..f7f0db97 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/TweetDetail.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/TweetDetail.java @@ -97,8 +97,8 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener, } - protected void onResume() { - super.onResume(); + protected void onStart() { + super.onStart(); if (mStat == null) { TimelineAdapter answerAdapter = new TimelineAdapter(this); answerAdapter.toggleImage(settings.loadImages()); @@ -113,10 +113,10 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener, @Override - protected void onPause() { + protected void onStop() { if (mStat != null && mStat.getStatus() == RUNNING) mStat.cancel(true); - super.onPause(); + super.onStop(); } diff --git a/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java b/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java index 1caf4f10..8c75c5df 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java @@ -102,8 +102,8 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener, @Override - protected void onResume() { - super.onResume(); + protected void onStart() { + super.onStart(); if (mProfile == null) { TimelineAdapter homeTl = new TimelineAdapter(this); homeTl.setColor(settings.getHighlightColor(), settings.getFontColor()); @@ -124,10 +124,10 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener, @Override - protected void onPause() { + protected void onStop() { if (mProfile != null && mProfile.getStatus() == RUNNING) mProfile.cancel(true); - super.onPause(); + super.onStop(); } diff --git a/app/src/main/res/layout/popup_tweet.xml b/app/src/main/res/layout/popup_tweet.xml index 98870539..64d0dcc1 100644 --- a/app/src/main/res/layout/popup_tweet.xml +++ b/app/src/main/res/layout/popup_tweet.xml @@ -38,8 +38,7 @@ android:id="@+id/img_preview" android:layout_width="@dimen/tweet_button_size" android:layout_height="@dimen/tweet_button_size" - android:layout_marginStart="@dimen/tweet_icon_margin" - android:layout_marginLeft="@dimen/tweet_icon_margin" + android:contentDescription="@string/image_preview" android:visibility="invisible" app:srcCompat="@drawable/preview" /> @@ -49,6 +48,7 @@ android:layout_height="@dimen/tweet_button_size" android:layout_marginStart="@dimen/tweet_icon_margin" android:layout_marginLeft="@dimen/tweet_icon_margin" + android:contentDescription="@string/add_image" app:srcCompat="@drawable/image" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dea3bf9f..b9bdba0a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -86,4 +86,8 @@ processing.. loading.. error while loading site! + Image preview + add new image + send Tweet + close tweet \ No newline at end of file