Handle multireddit links.

This commit is contained in:
Alex Ning 2020-02-21 20:38:56 +08:00
parent 3d9d98467a
commit a5b24b5500
2 changed files with 20 additions and 5 deletions

View File

@ -8,6 +8,7 @@ import android.content.pm.ResolveInfo;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.widget.Toast; import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
@ -40,6 +41,7 @@ public class LinkResolverActivity extends AppCompatActivity {
private static final String USER_PATTERN_1 = "/user/\\w+/{0,1}"; private static final String USER_PATTERN_1 = "/user/\\w+/{0,1}";
private static final String USER_PATTERN_2 = "/[uU]/\\w+/{0,1}"; private static final String USER_PATTERN_2 = "/[uU]/\\w+/{0,1}";
private static final String SIDEBAR_PATTERN = "/[rR]/\\w+/about/sidebar"; private static final String SIDEBAR_PATTERN = "/[rR]/\\w+/about/sidebar";
private static final String MULTIREDDIT_PATTERN = "/user/\\w+/m/\\w+/{0,1}";
@Inject @Inject
SharedPreferences mSharedPreferences; SharedPreferences mSharedPreferences;
@ -130,6 +132,8 @@ public class LinkResolverActivity extends AppCompatActivity {
} }
} else if (path.matches(USER_PATTERN_1)) { } else if (path.matches(USER_PATTERN_1)) {
Intent intent = new Intent(this, ViewUserDetailActivity.class); Intent intent = new Intent(this, ViewUserDetailActivity.class);
Log.i("afasfasfsda", "s " + path);
Log.i("afasfasfsda", "s " + path.substring(6));
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, path.substring(6)); intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, path.substring(6));
intent.putExtra(ViewUserDetailActivity.EXTRA_MESSAGE_FULLNAME, messageFullname); intent.putExtra(ViewUserDetailActivity.EXTRA_MESSAGE_FULLNAME, messageFullname);
intent.putExtra(ViewUserDetailActivity.EXTRA_NEW_ACCOUNT_NAME, newAccountName); intent.putExtra(ViewUserDetailActivity.EXTRA_NEW_ACCOUNT_NAME, newAccountName);
@ -144,6 +148,10 @@ public class LinkResolverActivity extends AppCompatActivity {
Intent intent = new Intent(this, ViewSidebarActivity.class); Intent intent = new Intent(this, ViewSidebarActivity.class);
intent.putExtra(ViewSidebarActivity.EXTRA_SUBREDDIT_NAME, path.substring(3, path.length() - 14)); intent.putExtra(ViewSidebarActivity.EXTRA_SUBREDDIT_NAME, path.substring(3, path.length() - 14));
startActivity(intent); startActivity(intent);
} else if (path.matches(MULTIREDDIT_PATTERN)) {
Intent intent = new Intent(this, ViewMultiRedditDetailActivity.class);
intent.putExtra(ViewMultiRedditDetailActivity.EXTRA_MULTIREDDIT_PATH, path);
startActivity(intent);
} else { } else {
deepLinkError(uri); deepLinkError(uri);
} }

View File

@ -49,6 +49,7 @@ public class ViewMultiRedditDetailActivity extends BaseActivity implements SortT
PostLayoutBottomSheetFragment.PostLayoutSelectionCallback { PostLayoutBottomSheetFragment.PostLayoutSelectionCallback {
public static final String EXTRA_MULTIREDDIT_DATA = "EMD"; public static final String EXTRA_MULTIREDDIT_DATA = "EMD";
public static final String EXTRA_MULTIREDDIT_PATH = "EMP";
private static final String FRAGMENT_OUT_STATE_KEY = "FOSK"; private static final String FRAGMENT_OUT_STATE_KEY = "FOSK";
private static final String IS_IN_LAZY_MODE_STATE = "IILMS"; private static final String IS_IN_LAZY_MODE_STATE = "IILMS";
@ -136,13 +137,19 @@ public class ViewMultiRedditDetailActivity extends BaseActivity implements SortT
MultiReddit multiReddit = getIntent().getParcelableExtra(EXTRA_MULTIREDDIT_DATA); MultiReddit multiReddit = getIntent().getParcelableExtra(EXTRA_MULTIREDDIT_DATA);
if (multiReddit == null) { if (multiReddit == null) {
Toast.makeText(this, R.string.multi_reddit_listing_activity_label, Toast.LENGTH_SHORT).show(); multiPath = getIntent().getStringExtra(EXTRA_MULTIREDDIT_PATH);
finish(); if (multiPath != null) {
return; toolbar.setTitle(multiPath.substring(multiPath.lastIndexOf("/", multiPath.length() - 2) + 1));
} else {
Toast.makeText(this, R.string.error_getting_multi_reddit_data, Toast.LENGTH_SHORT).show();
finish();
return;
}
} else {
multiPath = multiReddit.getPath();
toolbar.setTitle(multiReddit.getDisplayName());
} }
multiPath = multiReddit.getPath();
toolbar.setTitle(multiReddit.getDisplayName());
setSupportActionBar(toolbar); setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);