mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-11-10 20:57:25 +01:00
Reading all unread messages is now available.
This commit is contained in:
parent
f2d35eeb18
commit
9e062126d8
@ -41,13 +41,18 @@ import ml.docilealligator.infinityforreddit.ActivityToolbarInterface;
|
|||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
|
import ml.docilealligator.infinityforreddit.apis.RedditAPI;
|
||||||
import ml.docilealligator.infinityforreddit.asynctasks.GetCurrentAccount;
|
import ml.docilealligator.infinityforreddit.asynctasks.GetCurrentAccount;
|
||||||
import ml.docilealligator.infinityforreddit.asynctasks.SwitchAccountAsyncTask;
|
import ml.docilealligator.infinityforreddit.asynctasks.SwitchAccountAsyncTask;
|
||||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||||
import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent;
|
import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent;
|
||||||
import ml.docilealligator.infinityforreddit.fragments.InboxFragment;
|
import ml.docilealligator.infinityforreddit.fragments.InboxFragment;
|
||||||
import ml.docilealligator.infinityforreddit.message.FetchMessage;
|
import ml.docilealligator.infinityforreddit.message.FetchMessage;
|
||||||
|
import ml.docilealligator.infinityforreddit.utils.APIUtils;
|
||||||
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
|
||||||
|
import retrofit2.Call;
|
||||||
|
import retrofit2.Callback;
|
||||||
|
import retrofit2.Response;
|
||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class InboxActivity extends BaseActivity implements ActivityToolbarInterface {
|
public class InboxActivity extends BaseActivity implements ActivityToolbarInterface {
|
||||||
@ -230,6 +235,33 @@ public class InboxActivity extends BaseActivity implements ActivityToolbarInterf
|
|||||||
sectionsPagerAdapter.refresh();
|
sectionsPagerAdapter.refresh();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
} else if (item.getItemId() == R.id.action_read_all_messages_inbox_activity) {
|
||||||
|
if (mAccessToken != null) {
|
||||||
|
Toast.makeText(this, R.string.please_wait, Toast.LENGTH_SHORT).show();
|
||||||
|
mOauthRetrofit.create(RedditAPI.class).readAllMessages(APIUtils.getOAuthHeader(mAccessToken))
|
||||||
|
.enqueue(new Callback<String>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
|
if (response.isSuccessful()) {
|
||||||
|
Toast.makeText(InboxActivity.this, R.string.read_all_messages_success, Toast.LENGTH_SHORT).show();
|
||||||
|
if (sectionsPagerAdapter != null) {
|
||||||
|
sectionsPagerAdapter.readAllMessages();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (response.code() == 429) {
|
||||||
|
Toast.makeText(InboxActivity.this, R.string.read_all_messages_time_limit, Toast.LENGTH_LONG).show();
|
||||||
|
} else {
|
||||||
|
Toast.makeText(InboxActivity.this, R.string.read_all_messages_failed, Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
|
||||||
|
Toast.makeText(InboxActivity.this, R.string.read_all_messages_failed, Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
} else if (item.getItemId() == android.R.id.home) {
|
} else if (item.getItemId() == android.R.id.home) {
|
||||||
finish();
|
finish();
|
||||||
return true;
|
return true;
|
||||||
@ -354,5 +386,14 @@ public class InboxActivity extends BaseActivity implements ActivityToolbarInterf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void readAllMessages() {
|
||||||
|
if (tab1 != null) {
|
||||||
|
tab1.markAllMessagesRead();
|
||||||
|
}
|
||||||
|
if (tab2 != null) {
|
||||||
|
tab2.markAllMessagesRead();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -78,6 +78,7 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
|||||||
private int mUnreadMessageBackgroundColor;
|
private int mUnreadMessageBackgroundColor;
|
||||||
private int mColorPrimaryLightTheme;
|
private int mColorPrimaryLightTheme;
|
||||||
private int mButtonTextColor;
|
private int mButtonTextColor;
|
||||||
|
private boolean markAllMessagesAsRead = false;
|
||||||
|
|
||||||
public MessageRecyclerViewAdapter(Context context, Retrofit oauthRetrofit,
|
public MessageRecyclerViewAdapter(Context context, Retrofit oauthRetrofit,
|
||||||
CustomThemeWrapper customThemeWrapper,
|
CustomThemeWrapper customThemeWrapper,
|
||||||
@ -216,8 +217,12 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
|||||||
displayedMessage = message;
|
displayedMessage = message;
|
||||||
}
|
}
|
||||||
if (message.isNew()) {
|
if (message.isNew()) {
|
||||||
((DataViewHolder) holder).itemView.setBackgroundColor(
|
if (markAllMessagesAsRead) {
|
||||||
mUnreadMessageBackgroundColor);
|
message.setNew(false);
|
||||||
|
} else {
|
||||||
|
((DataViewHolder) holder).itemView.setBackgroundColor(
|
||||||
|
mUnreadMessageBackgroundColor);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message.wasComment()) {
|
if (message.wasComment()) {
|
||||||
@ -340,6 +345,10 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setMarkAllMessagesAsRead(boolean markAllMessagesAsRead) {
|
||||||
|
this.markAllMessagesAsRead = markAllMessagesAsRead;
|
||||||
|
}
|
||||||
|
|
||||||
public interface RetryLoadingMoreCallback {
|
public interface RetryLoadingMoreCallback {
|
||||||
void retryLoadingMore();
|
void retryLoadingMore();
|
||||||
}
|
}
|
||||||
|
@ -336,4 +336,7 @@ public interface RedditAPI {
|
|||||||
|
|
||||||
@GET("/r/randnsfw/new.json?sort=new&t=all&limit=1&raw_json=1")
|
@GET("/r/randnsfw/new.json?sort=new&t=all&limit=1&raw_json=1")
|
||||||
Call<String> getRandomNSFWPost();
|
Call<String> getRandomNSFWPost();
|
||||||
|
|
||||||
|
@POST("/api/read_all_messages")
|
||||||
|
Call<String> readAllMessages(@HeaderMap Map<String, String> headers);
|
||||||
}
|
}
|
||||||
|
@ -171,6 +171,27 @@ public class InboxFragment extends Fragment implements FragmentCommunicator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void markAllMessagesRead() {
|
||||||
|
if (mAdapter != null) {
|
||||||
|
mAdapter.setMarkAllMessagesAsRead(true);
|
||||||
|
|
||||||
|
int previousPosition = -1;
|
||||||
|
if (mLinearLayoutManager != null) {
|
||||||
|
previousPosition = mLinearLayoutManager.findFirstVisibleItemPosition();
|
||||||
|
}
|
||||||
|
|
||||||
|
RecyclerView.LayoutManager layoutManager = mRecyclerView.getLayoutManager();
|
||||||
|
mRecyclerView.setAdapter(null);
|
||||||
|
mRecyclerView.setLayoutManager(null);
|
||||||
|
mRecyclerView.setAdapter(mAdapter);
|
||||||
|
mRecyclerView.setLayoutManager(layoutManager);
|
||||||
|
|
||||||
|
if (previousPosition > 0) {
|
||||||
|
mRecyclerView.scrollToPosition(previousPosition);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void onRefresh() {
|
private void onRefresh() {
|
||||||
mMessageViewModel.refresh();
|
mMessageViewModel.refresh();
|
||||||
mAdapter.setNetworkState(null);
|
mAdapter.setNetworkState(null);
|
||||||
|
@ -6,4 +6,10 @@
|
|||||||
android:orderInCategory="1"
|
android:orderInCategory="1"
|
||||||
android:title="@string/action_refresh"
|
android:title="@string/action_refresh"
|
||||||
app:showAsAction="never" />
|
app:showAsAction="never" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_read_all_messages_inbox_activity"
|
||||||
|
android:orderInCategory="2"
|
||||||
|
android:title="@string/action_read_all_messages"
|
||||||
|
app:showAsAction="never" />
|
||||||
</menu>
|
</menu>
|
@ -75,6 +75,7 @@
|
|||||||
<string name="action_select_user_flair">Select User Flair</string>
|
<string name="action_select_user_flair">Select User Flair</string>
|
||||||
<string name="action_give_award">Give Award</string>
|
<string name="action_give_award">Give Award</string>
|
||||||
<string name="action_save_to_database">Save to Database</string>
|
<string name="action_save_to_database">Save to Database</string>
|
||||||
|
<string name="action_read_all_messages">Read All Messages</string>
|
||||||
|
|
||||||
<string name="parse_json_response_error">Error occurred when parsing the JSON response</string>
|
<string name="parse_json_response_error">Error occurred when parsing the JSON response</string>
|
||||||
<string name="retrieve_token_error">Error Retrieving the token</string>
|
<string name="retrieve_token_error">Error Retrieving the token</string>
|
||||||
@ -993,4 +994,8 @@
|
|||||||
<string name="user">User</string>
|
<string name="user">User</string>
|
||||||
<string name="edit_post_filter_name_of_usage_info">Leave it blank to apply this post filter to all the subreddits / users / multireddits</string>
|
<string name="edit_post_filter_name_of_usage_info">Leave it blank to apply this post filter to all the subreddits / users / multireddits</string>
|
||||||
|
|
||||||
|
<string name="read_all_messages_time_limit">You are doing this too frequently. Try again later. This is Reddit API\'s rate limit.</string>
|
||||||
|
<string name="read_all_messages_success">Read all messages successfully</string>
|
||||||
|
<string name="read_all_messages_failed">Unable to read all messages</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
Reference in New Issue
Block a user