mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-12-29 04:17:12 +01:00
Add another tab for PM in ViewMessageActivity.
This commit is contained in:
parent
f988416769
commit
3c482c63ec
@ -1054,9 +1054,9 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
||||
if (mAccessToken == null) {
|
||||
switch (position) {
|
||||
case 0:
|
||||
return "Popular";
|
||||
return getString(R.string.popular);
|
||||
case 1:
|
||||
return "All";
|
||||
return getString(R.string.all);
|
||||
}
|
||||
} else {
|
||||
switch (position) {
|
||||
|
@ -5,27 +5,23 @@ import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.recyclerview.widget.DividerItemDecoration;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentPagerAdapter;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.RequestManager;
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
import com.google.android.material.appbar.CollapsingToolbarLayout;
|
||||
import com.google.android.material.tabs.TabLayout;
|
||||
import com.r0adkll.slidr.Slidr;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
@ -37,15 +33,13 @@ import javax.inject.Named;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import ml.docilealligator.infinityforreddit.ActivityToolbarInterface;
|
||||
import ml.docilealligator.infinityforreddit.Adapter.MessageRecyclerViewAdapter;
|
||||
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
||||
import ml.docilealligator.infinityforreddit.AsyncTask.SwitchAccountAsyncTask;
|
||||
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||
import ml.docilealligator.infinityforreddit.FetchMessages;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.ViewMessagesFragment;
|
||||
import ml.docilealligator.infinityforreddit.Infinity;
|
||||
import ml.docilealligator.infinityforreddit.MessageViewModel;
|
||||
import ml.docilealligator.infinityforreddit.NetworkState;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||
import ml.docilealligator.infinityforreddit.Utils.SharedPreferencesUtils;
|
||||
@ -67,17 +61,10 @@ public class ViewMessageActivity extends BaseActivity implements ActivityToolbar
|
||||
AppBarLayout mAppBarLayout;
|
||||
@BindView(R.id.toolbar_view_message_activity)
|
||||
Toolbar mToolbar;
|
||||
@BindView(R.id.swipe_refresh_layout_view_message_activity)
|
||||
SwipeRefreshLayout mSwipeRefreshLayout;
|
||||
@BindView(R.id.recycler_view_view_message_activity)
|
||||
RecyclerView mRecyclerView;
|
||||
@BindView(R.id.fetch_messages_info_linear_layout_view_message_activity)
|
||||
LinearLayout mFetchMessageInfoLinearLayout;
|
||||
@BindView(R.id.fetch_messages_info_image_view_view_message_activity)
|
||||
ImageView mFetchMessageInfoImageView;
|
||||
@BindView(R.id.fetch_messages_info_text_view_view_message_activity)
|
||||
TextView mFetchMessageInfoTextView;
|
||||
MessageViewModel mMessageViewModel;
|
||||
@BindView(R.id.tab_layout_view_message_activity)
|
||||
TabLayout tabLayout;
|
||||
@BindView(R.id.view_pager_view_message_activity)
|
||||
ViewPager viewPager;
|
||||
@Inject
|
||||
@Named("oauth")
|
||||
Retrofit mOauthRetrofit;
|
||||
@ -88,12 +75,10 @@ public class ViewMessageActivity extends BaseActivity implements ActivityToolbar
|
||||
SharedPreferences mSharedPreferences;
|
||||
@Inject
|
||||
CustomThemeWrapper mCustomThemeWrapper;
|
||||
private SectionsPagerAdapter sectionsPagerAdapter;
|
||||
private boolean mNullAccessToken = false;
|
||||
private String mAccessToken;
|
||||
private String mNewAccountName;
|
||||
private MessageRecyclerViewAdapter mAdapter;
|
||||
private RequestManager mGlide;
|
||||
private LinearLayoutManager mLinearLayoutManager;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@ -113,8 +98,6 @@ public class ViewMessageActivity extends BaseActivity implements ActivityToolbar
|
||||
Slidr.attach(this);
|
||||
}
|
||||
|
||||
mGlide = Glide.with(this);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
Window window = getWindow();
|
||||
|
||||
@ -125,11 +108,6 @@ public class ViewMessageActivity extends BaseActivity implements ActivityToolbar
|
||||
if (isImmersiveInterface()) {
|
||||
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
||||
adjustToolbar(mToolbar);
|
||||
|
||||
int navBarHeight = getNavBarHeight();
|
||||
if (navBarHeight > 0) {
|
||||
mRecyclerView.setPadding(0, 0, 0, navBarHeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -167,9 +145,7 @@ public class ViewMessageActivity extends BaseActivity implements ActivityToolbar
|
||||
protected void applyCustomTheme() {
|
||||
mCoordinatorLayout.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor());
|
||||
applyAppBarLayoutAndToolbarTheme(mAppBarLayout, mToolbar);
|
||||
mSwipeRefreshLayout.setProgressBackgroundColorSchemeColor(mCustomThemeWrapper.getCircularProgressBarBackground());
|
||||
mSwipeRefreshLayout.setColorSchemeColors(mCustomThemeWrapper.getColorAccent());
|
||||
mFetchMessageInfoTextView.setTextColor(mCustomThemeWrapper.getSecondaryTextColor());
|
||||
applyTabLayoutTheme(tabLayout);
|
||||
}
|
||||
|
||||
private void getCurrentAccountAndFetchMessage() {
|
||||
@ -206,59 +182,10 @@ public class ViewMessageActivity extends BaseActivity implements ActivityToolbar
|
||||
}
|
||||
|
||||
private void bindView() {
|
||||
mAdapter = new MessageRecyclerViewAdapter(this, mOauthRetrofit, mCustomThemeWrapper,
|
||||
mAccessToken, () -> mMessageViewModel.retryLoadingMore());
|
||||
mLinearLayoutManager = new LinearLayoutManager(this);
|
||||
mRecyclerView.setLayoutManager(mLinearLayoutManager);
|
||||
mRecyclerView.setAdapter(mAdapter);
|
||||
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this, mLinearLayoutManager.getOrientation());
|
||||
mRecyclerView.addItemDecoration(dividerItemDecoration);
|
||||
|
||||
MessageViewModel.Factory factory = new MessageViewModel.Factory(mOauthRetrofit,
|
||||
getResources().getConfiguration().locale, mAccessToken, FetchMessages.WHERE_INBOX);
|
||||
mMessageViewModel = new ViewModelProvider(this, factory).get(MessageViewModel.class);
|
||||
mMessageViewModel.getMessages().observe(this, messages -> mAdapter.submitList(messages));
|
||||
|
||||
mMessageViewModel.hasMessage().observe(this, hasMessage -> {
|
||||
mSwipeRefreshLayout.setRefreshing(false);
|
||||
if (hasMessage) {
|
||||
mFetchMessageInfoLinearLayout.setVisibility(View.GONE);
|
||||
} else {
|
||||
mFetchMessageInfoLinearLayout.setOnClickListener(view -> {
|
||||
//Do nothing
|
||||
});
|
||||
showErrorView(R.string.no_messages);
|
||||
}
|
||||
});
|
||||
|
||||
mMessageViewModel.getInitialLoadingState().observe(this, networkState -> {
|
||||
if (networkState.getStatus().equals(NetworkState.Status.SUCCESS)) {
|
||||
mSwipeRefreshLayout.setRefreshing(false);
|
||||
} else if (networkState.getStatus().equals(NetworkState.Status.FAILED)) {
|
||||
mSwipeRefreshLayout.setRefreshing(false);
|
||||
mFetchMessageInfoLinearLayout.setOnClickListener(view -> {
|
||||
mFetchMessageInfoLinearLayout.setVisibility(View.GONE);
|
||||
mMessageViewModel.refresh();
|
||||
mAdapter.setNetworkState(null);
|
||||
});
|
||||
showErrorView(R.string.load_messages_failed);
|
||||
} else {
|
||||
mSwipeRefreshLayout.setRefreshing(true);
|
||||
}
|
||||
});
|
||||
|
||||
mMessageViewModel.getPaginationNetworkState().observe(this, networkState -> {
|
||||
mAdapter.setNetworkState(networkState);
|
||||
});
|
||||
|
||||
mSwipeRefreshLayout.setOnRefreshListener(this::onRefresh);
|
||||
}
|
||||
|
||||
private void showErrorView(int stringResId) {
|
||||
mSwipeRefreshLayout.setRefreshing(false);
|
||||
mFetchMessageInfoLinearLayout.setVisibility(View.VISIBLE);
|
||||
mFetchMessageInfoTextView.setText(stringResId);
|
||||
mGlide.load(R.drawable.error_image).into(mFetchMessageInfoImageView);
|
||||
sectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
|
||||
viewPager.setAdapter(sectionsPagerAdapter);
|
||||
viewPager.setOffscreenPageLimit(2);
|
||||
tabLayout.setupWithViewPager(viewPager);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -271,8 +198,9 @@ public class ViewMessageActivity extends BaseActivity implements ActivityToolbar
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||
if (item.getItemId() == R.id.action_refresh_view_message_activity) {
|
||||
mMessageViewModel.refresh();
|
||||
mAdapter.setNetworkState(null);
|
||||
if (sectionsPagerAdapter != null) {
|
||||
sectionsPagerAdapter.refresh();
|
||||
}
|
||||
return true;
|
||||
} else if (item.getItemId() == android.R.id.home) {
|
||||
finish();
|
||||
@ -302,14 +230,89 @@ public class ViewMessageActivity extends BaseActivity implements ActivityToolbar
|
||||
}
|
||||
}
|
||||
|
||||
private void onRefresh() {
|
||||
mMessageViewModel.refresh();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLongPress() {
|
||||
if (mLinearLayoutManager != null) {
|
||||
mLinearLayoutManager.scrollToPositionWithOffset(0, 0);
|
||||
if (sectionsPagerAdapter != null) {
|
||||
sectionsPagerAdapter.goBackToTop();
|
||||
}
|
||||
}
|
||||
|
||||
private class SectionsPagerAdapter extends FragmentPagerAdapter {
|
||||
private ViewMessagesFragment tab1;
|
||||
private ViewMessagesFragment tab2;
|
||||
|
||||
public SectionsPagerAdapter(@NonNull FragmentManager fm) {
|
||||
super(fm, FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Fragment getItem(int position) {
|
||||
if (position == 0) {
|
||||
ViewMessagesFragment fragment = new ViewMessagesFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(ViewMessagesFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
||||
bundle.putString(ViewMessagesFragment.EXTRA_MESSAGE_WHERE, FetchMessages.WHERE_INBOX);
|
||||
fragment.setArguments(bundle);
|
||||
return fragment;
|
||||
} else {
|
||||
ViewMessagesFragment fragment = new ViewMessagesFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(ViewMessagesFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
||||
bundle.putString(ViewMessagesFragment.EXTRA_MESSAGE_WHERE, FetchMessages.WHERE_MESSAGES);
|
||||
fragment.setArguments(bundle);
|
||||
return fragment;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public CharSequence getPageTitle(int position) {
|
||||
if (position == 0) {
|
||||
return getString(R.string.notifications);
|
||||
}
|
||||
|
||||
return getString(R.string.messages);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Object instantiateItem(@NonNull ViewGroup container, int position) {
|
||||
Fragment fragment = (Fragment) super.instantiateItem(container, position);
|
||||
if (position == 0) {
|
||||
tab1 = (ViewMessagesFragment) fragment;
|
||||
} else if (position == 1) {
|
||||
tab2 = (ViewMessagesFragment) fragment;
|
||||
}
|
||||
|
||||
return fragment;
|
||||
}
|
||||
|
||||
void refresh() {
|
||||
if (viewPager.getCurrentItem() == 0) {
|
||||
if (tab1 != null) {
|
||||
tab1.refresh();
|
||||
}
|
||||
} else if (viewPager.getCurrentItem() == 1 && tab2 != null) {
|
||||
tab2.refresh();
|
||||
}
|
||||
}
|
||||
|
||||
void goBackToTop() {
|
||||
if (viewPager.getCurrentItem() == 0) {
|
||||
if (tab1 != null) {
|
||||
tab1.goBackToTop();
|
||||
}
|
||||
} else if (viewPager.getCurrentItem() == 1) {
|
||||
if (tab2 != null) {
|
||||
tab2.goBackToTop();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.paging.PagedListAdapter;
|
||||
@ -29,6 +30,7 @@ import io.noties.markwon.simple.ext.SimpleExtPlugin;
|
||||
import ml.docilealligator.infinityforreddit.Activity.LinkResolverActivity;
|
||||
import ml.docilealligator.infinityforreddit.Activity.ViewUserDetailActivity;
|
||||
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.FetchMessages;
|
||||
import ml.docilealligator.infinityforreddit.Message;
|
||||
import ml.docilealligator.infinityforreddit.NetworkState;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
@ -54,6 +56,7 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
||||
private Retrofit mOauthRetrofit;
|
||||
private Markwon mMarkwon;
|
||||
private String mAccessToken;
|
||||
private int mMessageType;
|
||||
private NetworkState networkState;
|
||||
private RetryLoadingMoreCallback mRetryLoadingMoreCallback;
|
||||
private int mColorAccent;
|
||||
@ -67,7 +70,8 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
||||
|
||||
public MessageRecyclerViewAdapter(Context context, Retrofit oauthRetrofit,
|
||||
CustomThemeWrapper customThemeWrapper,
|
||||
String accessToken, RetryLoadingMoreCallback retryLoadingMoreCallback) {
|
||||
String accessToken, String where,
|
||||
RetryLoadingMoreCallback retryLoadingMoreCallback) {
|
||||
super(DIFF_CALLBACK);
|
||||
mContext = context;
|
||||
mOauthRetrofit = oauthRetrofit;
|
||||
@ -98,6 +102,8 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
||||
)
|
||||
.build();
|
||||
mAccessToken = accessToken;
|
||||
mMessageType = where.equals(FetchMessages.WHERE_MESSAGES) ?
|
||||
FetchMessages.MESSAGE_TYPE_PRIVATE_MESSAGE : FetchMessages.MESSAGE_TYPE_NOTIFICATION;
|
||||
|
||||
mColorAccent = customThemeWrapper.getColorAccent();
|
||||
mMessageBackgroundColor = customThemeWrapper.getCardViewBackgroundColor();
|
||||
@ -132,7 +138,6 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
||||
}
|
||||
|
||||
if (message.wasComment()) {
|
||||
((DataViewHolder) holder).authorTextView.setTextColor(mUsernameColor);
|
||||
((DataViewHolder) holder).titleTextView.setText(message.getTitle());
|
||||
} else {
|
||||
((DataViewHolder) holder).titleTextView.setVisibility(View.GONE);
|
||||
@ -149,6 +154,8 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
||||
Intent intent = new Intent(mContext, LinkResolverActivity.class);
|
||||
intent.setData(uri);
|
||||
mContext.startActivity(intent);
|
||||
} else if (mMessageType == FetchMessages.MESSAGE_TYPE_PRIVATE_MESSAGE) {
|
||||
Toast.makeText(mContext, "To be implemented", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
if (message.isNew()) {
|
||||
@ -171,11 +178,9 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
||||
});
|
||||
|
||||
((DataViewHolder) holder).authorTextView.setOnClickListener(view -> {
|
||||
if (message.wasComment()) {
|
||||
Intent intent = new Intent(mContext, ViewUserDetailActivity.class);
|
||||
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, message.getAuthor());
|
||||
mContext.startActivity(intent);
|
||||
}
|
||||
Intent intent = new Intent(mContext, ViewUserDetailActivity.class);
|
||||
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, message.getAuthor());
|
||||
mContext.startActivity(intent);
|
||||
});
|
||||
|
||||
((DataViewHolder) holder).contentCustomMarkwonView.setOnClickListener(view -> ((DataViewHolder) holder).itemView.performClick());
|
||||
@ -211,7 +216,6 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
||||
if (holder instanceof DataViewHolder) {
|
||||
((DataViewHolder) holder).itemView.setBackgroundColor(mMessageBackgroundColor);
|
||||
((DataViewHolder) holder).titleTextView.setVisibility(View.VISIBLE);
|
||||
((DataViewHolder) holder).authorTextView.setTextColor(mPrimaryTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -50,6 +50,7 @@ import ml.docilealligator.infinityforreddit.Fragment.SubredditListingFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.SubscribedSubredditsListingFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.UserListingFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.ViewImgurVideoFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.ViewMessagesFragment;
|
||||
import ml.docilealligator.infinityforreddit.Service.DownloadRedditVideoService;
|
||||
import ml.docilealligator.infinityforreddit.Service.SubmitPostService;
|
||||
import ml.docilealligator.infinityforreddit.Settings.AdvancedPreferenceFragment;
|
||||
@ -173,4 +174,6 @@ public interface AppComponent {
|
||||
void inject(DownloadRedditVideoService downloadRedditVideoService);
|
||||
|
||||
void inject(MultiRedditListingFragment multiRedditListingFragment);
|
||||
|
||||
void inject(ViewMessagesFragment viewMessagesFragment);
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package ml.docilealligator.infinityforreddit.Fragment;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
@ -9,22 +10,27 @@ import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.recyclerview.widget.DividerItemDecoration;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.RequestManager;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import ml.docilealligator.infinityforreddit.Activity.BaseActivity;
|
||||
import ml.docilealligator.infinityforreddit.Adapter.MessageRecyclerViewAdapter;
|
||||
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.FetchMessages;
|
||||
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||
import ml.docilealligator.infinityforreddit.Infinity;
|
||||
import ml.docilealligator.infinityforreddit.MessageViewModel;
|
||||
import ml.docilealligator.infinityforreddit.NetworkState;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
@ -33,6 +39,8 @@ import retrofit2.Retrofit;
|
||||
|
||||
public class ViewMessagesFragment extends Fragment implements FragmentCommunicator {
|
||||
|
||||
public static final String EXTRA_ACCESS_TOKEN = "EAT";
|
||||
public static final String EXTRA_MESSAGE_WHERE = "EMT";
|
||||
@BindView(R.id.swipe_refresh_layout_view_messages_fragment)
|
||||
SwipeRefreshLayout mSwipeRefreshLayout;
|
||||
@BindView(R.id.recycler_view_view_messages_fragment)
|
||||
@ -58,6 +66,7 @@ public class ViewMessagesFragment extends Fragment implements FragmentCommunicat
|
||||
private MessageRecyclerViewAdapter mAdapter;
|
||||
private RequestManager mGlide;
|
||||
private LinearLayoutManager mLinearLayoutManager;
|
||||
private BaseActivity mActivity;
|
||||
|
||||
public ViewMessagesFragment() {
|
||||
// Required empty public constructor
|
||||
@ -68,8 +77,34 @@ public class ViewMessagesFragment extends Fragment implements FragmentCommunicat
|
||||
Bundle savedInstanceState) {
|
||||
View rootView = inflater.inflate(R.layout.fragment_view_messages, container, false);
|
||||
|
||||
((Infinity) mActivity.getApplication()).getAppComponent().inject(this);
|
||||
|
||||
ButterKnife.bind(this, rootView);
|
||||
|
||||
applyTheme();
|
||||
|
||||
Bundle arguments = getArguments();
|
||||
if (arguments == null) {
|
||||
return rootView;
|
||||
}
|
||||
mAccessToken = getArguments().getString(EXTRA_ACCESS_TOKEN);
|
||||
mGlide = Glide.with(this);
|
||||
|
||||
if (mActivity.isImmersiveInterface()) {
|
||||
mRecyclerView.setPadding(0, 0, 0, mActivity.getNavBarHeight());
|
||||
}
|
||||
|
||||
String where = arguments.getString(EXTRA_MESSAGE_WHERE);
|
||||
mAdapter = new MessageRecyclerViewAdapter(mActivity, mOauthRetrofit, mCustomThemeWrapper,
|
||||
mAccessToken, where, () -> mMessageViewModel.retryLoadingMore());
|
||||
mLinearLayoutManager = new LinearLayoutManager(mActivity);
|
||||
mRecyclerView.setLayoutManager(mLinearLayoutManager);
|
||||
mRecyclerView.setAdapter(mAdapter);
|
||||
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(mActivity, mLinearLayoutManager.getOrientation());
|
||||
mRecyclerView.addItemDecoration(dividerItemDecoration);
|
||||
|
||||
MessageViewModel.Factory factory = new MessageViewModel.Factory(mOauthRetrofit,
|
||||
getResources().getConfiguration().locale, mAccessToken, FetchMessages.WHERE_INBOX);
|
||||
getResources().getConfiguration().locale, mAccessToken, where);
|
||||
mMessageViewModel = new ViewModelProvider(this, factory).get(MessageViewModel.class);
|
||||
mMessageViewModel.getMessages().observe(getViewLifecycleOwner(), messages -> mAdapter.submitList(messages));
|
||||
|
||||
@ -78,9 +113,7 @@ public class ViewMessagesFragment extends Fragment implements FragmentCommunicat
|
||||
if (hasMessage) {
|
||||
mFetchMessageInfoLinearLayout.setVisibility(View.GONE);
|
||||
} else {
|
||||
mFetchMessageInfoLinearLayout.setOnClickListener(view -> {
|
||||
//Do nothing
|
||||
});
|
||||
mFetchMessageInfoLinearLayout.setOnClickListener(null);
|
||||
showErrorView(R.string.no_messages);
|
||||
}
|
||||
});
|
||||
@ -119,10 +152,25 @@ public class ViewMessagesFragment extends Fragment implements FragmentCommunicat
|
||||
|
||||
@Override
|
||||
public void applyTheme() {
|
||||
mSwipeRefreshLayout.setProgressBackgroundColorSchemeColor(mCustomThemeWrapper.getCircularProgressBarBackground());
|
||||
mSwipeRefreshLayout.setColorSchemeColors(mCustomThemeWrapper.getColorAccent());
|
||||
mFetchMessageInfoTextView.setTextColor(mCustomThemeWrapper.getSecondaryTextColor());
|
||||
}
|
||||
|
||||
public void goBackToTop() {
|
||||
if (mLinearLayoutManager != null) {
|
||||
mLinearLayoutManager.scrollToPositionWithOffset(0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
private void onRefresh() {
|
||||
mMessageViewModel.refresh();
|
||||
mAdapter.setNetworkState(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
mActivity = (BaseActivity) context;
|
||||
}
|
||||
}
|
@ -31,52 +31,24 @@
|
||||
|
||||
</com.google.android.material.appbar.CollapsingToolbarLayout>
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior" >
|
||||
|
||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/swipe_refresh_layout_view_message_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/recycler_view_view_message_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clipToPadding="false"/>
|
||||
|
||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/fetch_messages_info_linear_layout_view_message_activity"
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/tab_layout_view_message_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone">
|
||||
android:layout_gravity="bottom"
|
||||
app:layout_scrollFlags="scroll|enterAlways"
|
||||
app:tabGravity="fill"
|
||||
app:tabIndicatorHeight="3dp"
|
||||
app:tabMode="fixed"
|
||||
app:tabRippleColor="?attr/colorControlHighlight"
|
||||
app:tabUnboundedRipple="false" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/fetch_messages_info_image_view_view_message_activity"
|
||||
android:layout_width="150dp"
|
||||
android:layout_height="wrap_content" />
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/fetch_messages_info_text_view_view_message_activity"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:gravity="center"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
<androidx.viewpager.widget.ViewPager
|
||||
android:id="@+id/view_pager_view_message_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
@ -760,6 +760,8 @@
|
||||
|
||||
<string name="home">Home</string>
|
||||
<string name="popular">Popular</string>
|
||||
<string name="notifications">Notifications</string>
|
||||
<string name="messages">Messages</string>
|
||||
|
||||
<string name="fetch_gfycat_video_failed">Fetch Gfycat video failed</string>
|
||||
<string name="fetch_redgifs_video_failed">Fetch Redgifs video failed</string>
|
||||
|
Loading…
Reference in New Issue
Block a user