Remove SidebarActivity, use sidebar page in SubredditDetailActivity.

This commit is contained in:
Hermes Junior 2020-06-15 17:18:50 +02:00 committed by OHermesJunior
parent e8e85b9631
commit 34b6ec90aa
9 changed files with 13 additions and 337 deletions

View File

@ -74,10 +74,6 @@
android:parentActivityName=".Activity.MainActivity" android:parentActivityName=".Activity.MainActivity"
android:theme="@style/AppTheme.NoActionBar" android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustResize" /> android:windowSoftInputMode="adjustResize" />
<activity
android:name=".Activity.ViewSidebarActivity"
android:parentActivityName=".Activity.MainActivity"
android:theme="@style/AppTheme.NoActionBar" />
<activity <activity
android:name=".Activity.ViewMultiRedditDetailActivity" android:name=".Activity.ViewMultiRedditDetailActivity"
android:parentActivityName=".Activity.MainActivity" android:parentActivityName=".Activity.MainActivity"

View File

@ -159,8 +159,9 @@ public class LinkResolverActivity extends AppCompatActivity {
intent.putExtra(ViewUserDetailActivity.EXTRA_NEW_ACCOUNT_NAME, newAccountName); intent.putExtra(ViewUserDetailActivity.EXTRA_NEW_ACCOUNT_NAME, newAccountName);
startActivity(intent); startActivity(intent);
} else if (path.matches(SIDEBAR_PATTERN)) { } else if (path.matches(SIDEBAR_PATTERN)) {
Intent intent = new Intent(this, ViewSidebarActivity.class); Intent intent = new Intent(this, ViewSubredditDetailActivity.class);
intent.putExtra(ViewSidebarActivity.EXTRA_SUBREDDIT_NAME, path.substring(3, path.length() - 14)); intent.putExtra(ViewSubredditDetailActivity.EXTRA_SUBREDDIT_NAME_KEY, path.substring(3, path.length() - 14));
intent.putExtra(ViewSubredditDetailActivity.EXTRA_VIEW_SIDEBAR, true);
startActivity(intent); startActivity(intent);
} else if (path.matches(MULTIREDDIT_PATTERN)) { } else if (path.matches(MULTIREDDIT_PATTERN)) {
Intent intent = new Intent(this, ViewMultiRedditDetailActivity.class); Intent intent = new Intent(this, ViewMultiRedditDetailActivity.class);

View File

@ -1,251 +0,0 @@
package ml.docilealligator.infinityforreddit.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.text.Spanned;
import android.text.style.SuperscriptSpan;
import android.text.util.Linkify;
import android.util.TypedValue;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.Toolbar;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.google.android.material.appbar.AppBarLayout;
import org.commonmark.ext.gfm.tables.TableBlock;
import javax.inject.Inject;
import javax.inject.Named;
import butterknife.BindView;
import butterknife.ButterKnife;
import io.noties.markwon.AbstractMarkwonPlugin;
import io.noties.markwon.Markwon;
import io.noties.markwon.MarkwonConfiguration;
import io.noties.markwon.ext.strikethrough.StrikethroughPlugin;
import io.noties.markwon.linkify.LinkifyPlugin;
import io.noties.markwon.recycler.MarkwonAdapter;
import io.noties.markwon.recycler.table.TableEntry;
import io.noties.markwon.recycler.table.TableEntryPlugin;
import io.noties.markwon.simple.ext.SimpleExtPlugin;
import io.noties.markwon.urlprocessor.UrlProcessorRelativeToAbsolute;
import ml.docilealligator.infinityforreddit.ActivityToolbarInterface;
import ml.docilealligator.infinityforreddit.AsyncTask.InsertSubredditDataAsyncTask;
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.FetchSubredditData;
import ml.docilealligator.infinityforreddit.Infinity;
import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
import ml.docilealligator.infinityforreddit.SubredditDatabase.SubredditData;
import ml.docilealligator.infinityforreddit.SubredditDatabase.SubredditViewModel;
import retrofit2.Retrofit;
public class ViewSidebarActivity extends BaseActivity implements ActivityToolbarInterface {
public static final String EXTRA_SUBREDDIT_NAME = "ESN";
@BindView(R.id.coordinator_layout_view_sidebar_activity)
CoordinatorLayout coordinatorLayout;
@BindView(R.id.appbar_layout_view_sidebar_activity)
AppBarLayout appBarLayout;
@BindView(R.id.toolbar_view_sidebar_activity)
Toolbar toolbar;
@BindView(R.id.swipe_refresh_layout_view_sidebar_activity)
SwipeRefreshLayout swipeRefreshLayout;
@BindView(R.id.markdown_recycler_view_view_sidebar_activity)
RecyclerView markdownRecyclerView;
@Inject
@Named("no_oauth")
Retrofit mRetrofit;
@Inject
RedditDataRoomDatabase mRedditDataRoomDatabase;
@Inject
@Named("default")
SharedPreferences mSharedPreferences;
@Inject
CustomThemeWrapper mCustomThemeWrapper;
public SubredditViewModel mSubredditViewModel;
private LinearLayoutManager mLinearLayoutManager;
private String subredditName;
private int markdownColor;
@Override
protected void onCreate(Bundle savedInstanceState) {
((Infinity) getApplication()).getAppComponent().inject(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_sidebar);
ButterKnife.bind(this);
applyCustomTheme();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
Window window = getWindow();
if (isChangeStatusBarIconColor()) {
addOnOffsetChangedListener(appBarLayout);
}
if (isImmersiveInterface()) {
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
adjustToolbar(toolbar);
int navBarHeight = getNavBarHeight();
if (navBarHeight > 0) {
int px = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
16,
getResources().getDisplayMetrics()
);
markdownRecyclerView.setPadding(px, px, px, navBarHeight);
}
}
}
subredditName = getIntent().getStringExtra(EXTRA_SUBREDDIT_NAME);
if (subredditName == null) {
Toast.makeText(this, R.string.error_getting_subreddit_name, Toast.LENGTH_SHORT).show();
finish();
return;
}
toolbar.setTitle("r/" + subredditName);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
setToolbarGoToTop(toolbar);
Markwon markwon = Markwon.builder(this)
.usePlugin(new AbstractMarkwonPlugin() {
@Override
public void beforeSetText(@NonNull TextView textView, @NonNull Spanned markdown) {
textView.setTextColor(markdownColor);
}
@Override
public void configureConfiguration(@NonNull MarkwonConfiguration.Builder builder) {
builder.linkResolver((view, link) -> {
Intent intent = new Intent(ViewSidebarActivity.this, LinkResolverActivity.class);
Uri uri = Uri.parse(link);
if (uri.getScheme() == null && uri.getHost() == null) {
intent.setData(LinkResolverActivity.getRedditUriByPath(link));
} else {
intent.setData(uri);
}
ViewSidebarActivity.this.startActivity(intent);
}).urlProcessor(new UrlProcessorRelativeToAbsolute("https://www.reddit.com"));
}
})
.usePlugin(StrikethroughPlugin.create())
.usePlugin(LinkifyPlugin.create(Linkify.WEB_URLS))
.usePlugin(SimpleExtPlugin.create(plugin ->
plugin.addExtension(1, '^', (configuration, props) -> {
return new SuperscriptSpan();
})
)
)
.usePlugin(TableEntryPlugin.create(this))
.build();
MarkwonAdapter markwonAdapter = MarkwonAdapter.builder(R.layout.adapter_default_entry, R.id.text)
.include(TableBlock.class, TableEntry.create(builder -> builder
.tableLayout(R.layout.adapter_table_block, R.id.table_layout)
.textLayoutIsRoot(R.layout.view_table_entry_cell)))
.build();
mLinearLayoutManager = new LinearLayoutManager(this);
markdownRecyclerView.setLayoutManager(mLinearLayoutManager);
markdownRecyclerView.setAdapter(markwonAdapter);
mSubredditViewModel = new ViewModelProvider(this,
new SubredditViewModel.Factory(getApplication(), mRedditDataRoomDatabase, subredditName))
.get(SubredditViewModel.class);
mSubredditViewModel.getSubredditLiveData().observe(this, subredditData -> {
if (subredditData != null) {
if (subredditData.getSidebarDescription() != null && !subredditData.getSidebarDescription().equals("")) {
markwonAdapter.setMarkdown(markwon, subredditData.getSidebarDescription());
markwonAdapter.notifyDataSetChanged();
}
} else {
fetchSubredditData();
}
});
swipeRefreshLayout.setOnRefreshListener(this::fetchSubredditData);
}
private void fetchSubredditData() {
swipeRefreshLayout.setRefreshing(true);
FetchSubredditData.fetchSubredditData(mRetrofit, subredditName, new FetchSubredditData.FetchSubredditDataListener() {
@Override
public void onFetchSubredditDataSuccess(SubredditData subredditData, int nCurrentOnlineSubscribers) {
swipeRefreshLayout.setRefreshing(false);
new InsertSubredditDataAsyncTask(mRedditDataRoomDatabase, subredditData, () -> swipeRefreshLayout.setRefreshing(false)).execute();
}
@Override
public void onFetchSubredditDataFail() {
swipeRefreshLayout.setRefreshing(false);
Toast.makeText(ViewSidebarActivity.this, R.string.cannot_fetch_sidebar, Toast.LENGTH_SHORT).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.view_sidebar_activity, menu);
applyMenuItemTheme(menu);
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
} else if (item.getItemId() == R.id.action_refresh_view_sidebar_activity) {
if (!swipeRefreshLayout.isRefreshing()) {
fetchSubredditData();
}
return true;
}
return false;
}
@Override
public SharedPreferences getSharedPreferences() {
return mSharedPreferences;
}
@Override
protected CustomThemeWrapper getCustomThemeWrapper() {
return mCustomThemeWrapper;
}
@Override
protected void applyCustomTheme() {
coordinatorLayout.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor());
applyAppBarLayoutAndToolbarTheme(appBarLayout, toolbar);
swipeRefreshLayout.setProgressBackgroundColorSchemeColor(mCustomThemeWrapper.getCircularProgressBarBackground());
swipeRefreshLayout.setColorSchemeColors(mCustomThemeWrapper.getColorAccent());
markdownColor = mCustomThemeWrapper.getSecondaryTextColor();
}
@Override
public void onLongPress() {
if (mLinearLayoutManager != null) {
mLinearLayoutManager.scrollToPositionWithOffset(0, 0);
}
}
}

View File

@ -90,6 +90,7 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
public static final String EXTRA_SUBREDDIT_NAME_KEY = "ESN"; public static final String EXTRA_SUBREDDIT_NAME_KEY = "ESN";
public static final String EXTRA_MESSAGE_FULLNAME = "ENF"; public static final String EXTRA_MESSAGE_FULLNAME = "ENF";
public static final String EXTRA_NEW_ACCOUNT_NAME = "ENAN"; public static final String EXTRA_NEW_ACCOUNT_NAME = "ENAN";
public static final String EXTRA_VIEW_SIDEBAR = "EVSB";
private static final String FETCH_SUBREDDIT_INFO_STATE = "FSIS"; private static final String FETCH_SUBREDDIT_INFO_STATE = "FSIS";
private static final String CURRENT_ONLINE_SUBSCRIBERS_STATE = "COSS"; private static final String CURRENT_ONLINE_SUBSCRIBERS_STATE = "COSS";
@ -627,6 +628,12 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
viewPager.setOffscreenPageLimit(2); viewPager.setOffscreenPageLimit(2);
tabLayout.setupWithViewPager(viewPager); tabLayout.setupWithViewPager(viewPager);
boolean viewSidebar = getIntent().getBooleanExtra(EXTRA_VIEW_SIDEBAR, false);
if (viewSidebar) {
viewPager.setCurrentItem(1, false);
}
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override @Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
@ -724,11 +731,6 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
case R.id.action_change_post_layout_view_subreddit_detail_activity: case R.id.action_change_post_layout_view_subreddit_detail_activity:
postLayoutBottomSheetFragment.show(getSupportFragmentManager(), postLayoutBottomSheetFragment.getTag()); postLayoutBottomSheetFragment.show(getSupportFragmentManager(), postLayoutBottomSheetFragment.getTag());
return true; return true;
case R.id.action_view_side_bar_view_subreddit_detail_activity:
Intent sidebarIntent = new Intent(this, ViewSidebarActivity.class);
sidebarIntent.putExtra(ViewSidebarActivity.EXTRA_SUBREDDIT_NAME, subredditName);
startActivity(sidebarIntent);
return true;
case R.id.action_share_view_subreddit_detail_activity: case R.id.action_share_view_subreddit_detail_activity:
Intent shareIntent = new Intent(Intent.ACTION_SEND); Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain"); shareIntent.setType("text/plain");

View File

@ -38,7 +38,6 @@ import ml.docilealligator.infinityforreddit.Activity.ViewImgurMediaActivity;
import ml.docilealligator.infinityforreddit.Activity.ViewMessageActivity; import ml.docilealligator.infinityforreddit.Activity.ViewMessageActivity;
import ml.docilealligator.infinityforreddit.Activity.ViewMultiRedditDetailActivity; import ml.docilealligator.infinityforreddit.Activity.ViewMultiRedditDetailActivity;
import ml.docilealligator.infinityforreddit.Activity.ViewPostDetailActivity; import ml.docilealligator.infinityforreddit.Activity.ViewPostDetailActivity;
import ml.docilealligator.infinityforreddit.Activity.ViewSidebarActivity;
import ml.docilealligator.infinityforreddit.Activity.ViewSubredditDetailActivity; import ml.docilealligator.infinityforreddit.Activity.ViewSubredditDetailActivity;
import ml.docilealligator.infinityforreddit.Activity.ViewUserDetailActivity; import ml.docilealligator.infinityforreddit.Activity.ViewUserDetailActivity;
import ml.docilealligator.infinityforreddit.Activity.ViewVideoActivity; import ml.docilealligator.infinityforreddit.Activity.ViewVideoActivity;
@ -142,8 +141,6 @@ public interface AppComponent {
void inject(ViewMultiRedditDetailActivity viewMultiRedditDetailActivity); void inject(ViewMultiRedditDetailActivity viewMultiRedditDetailActivity);
void inject(ViewSidebarActivity viewSidebarActivity);
void inject(ViewVideoActivity viewVideoActivity); void inject(ViewVideoActivity viewVideoActivity);
void inject(GesturesAndButtonsPreferenceFragment gesturesAndButtonsPreferenceFragment); void inject(GesturesAndButtonsPreferenceFragment gesturesAndButtonsPreferenceFragment);

View File

@ -50,9 +50,6 @@ import ml.docilealligator.infinityforreddit.SubredditDatabase.SubredditData;
import ml.docilealligator.infinityforreddit.SubredditDatabase.SubredditViewModel; import ml.docilealligator.infinityforreddit.SubredditDatabase.SubredditViewModel;
import retrofit2.Retrofit; import retrofit2.Retrofit;
/**
* A simple {@link Fragment} subclass.
*/
public class SidebarFragment extends Fragment { public class SidebarFragment extends Fragment {
public static final String EXTRA_SUBREDDIT_NAME = "ESN"; public static final String EXTRA_SUBREDDIT_NAME = "ESN";
@ -152,7 +149,7 @@ public class SidebarFragment extends Fragment {
mSubredditViewModel = new ViewModelProvider(this, mSubredditViewModel = new ViewModelProvider(this,
new SubredditViewModel.Factory(activity.getApplication(), mRedditDataRoomDatabase, subredditName)) new SubredditViewModel.Factory(activity.getApplication(), mRedditDataRoomDatabase, subredditName))
.get(SubredditViewModel.class); .get(SubredditViewModel.class);
mSubredditViewModel.getSubredditLiveData().observe(this, subredditData -> { mSubredditViewModel.getSubredditLiveData().observe(getViewLifecycleOwner(), subredditData -> {
if (subredditData != null) { if (subredditData != null) {
if (subredditData.getSidebarDescription() != null && !subredditData.getSidebarDescription().equals("")) { if (subredditData.getSidebarDescription() != null && !subredditData.getSidebarDescription().equals("")) {
markwonAdapter.setMarkdown(markwon, subredditData.getSidebarDescription()); markwonAdapter.setMarkdown(markwon, subredditData.getSidebarDescription());

View File

@ -1,50 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/coordinator_layout_view_sidebar_activity"
tools:context=".Activity.ViewSidebarActivity">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar_layout_view_sidebar_activity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_scrollFlags="scroll|enterAlways"
app:titleEnabled="false"
app:toolbarId="@+id/toolbar_view_sidebar_activity">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar_view_sidebar_activity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
app:popupTheme="@style/AppTheme.PopupOverlay"
app:navigationIcon="?attr/homeAsUpIndicator" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh_layout_view_sidebar_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/markdown_recycler_view_view_sidebar_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
android:clipToPadding="false" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_refresh_view_sidebar_activity"
android:orderInCategory="1"
android:title="@string/action_refresh"
android:icon="@drawable/ic_refresh_toolbar_24dp"
app:showAsAction="ifRoom" />
</menu>

View File

@ -34,12 +34,6 @@
android:title="@string/action_change_post_layout" android:title="@string/action_change_post_layout"
app:showAsAction="never" /> app:showAsAction="never" />
<item
android:id="@+id/action_view_side_bar_view_subreddit_detail_activity"
android:orderInCategory="6"
android:title="@string/action_view_side_bar"
app:showAsAction="never" />
<item <item
android:id="@+id/action_share_view_subreddit_detail_activity" android:id="@+id/action_share_view_subreddit_detail_activity"
android:orderInCategory="7" android:orderInCategory="7"