Skip to content
This repository was archived by the owner on Jun 1, 2024. It is now read-only.

Commit a38749a

Browse files
author
Your Name
committed
Add PoC for automatically hiding read posts.
1 parent 1497203 commit a38749a

File tree

6 files changed

+57
-7
lines changed

6 files changed

+57
-7
lines changed

app/src/main/java/me/ccrama/redditslide/Adapters/SubredditPosts.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import me.ccrama.redditslide.ContentType;
3535
import me.ccrama.redditslide.Fragments.SubmissionsView;
3636
import me.ccrama.redditslide.HasSeen;
37+
import me.ccrama.redditslide.Hidden;
3738
import me.ccrama.redditslide.LastComments;
3839
import me.ccrama.redditslide.OfflineSubreddit;
3940
import me.ccrama.redditslide.PostLoader;
@@ -399,6 +400,14 @@ public void onPostExecute(final List<Submission> submissions) {
399400
@Override
400401
protected List<Submission> doInBackground(String... subredditPaginators) {
401402
if (BuildConfig.DEBUG) LogUtil.v("Loading data");
403+
final AsyncTask<Void, Void, Void> hideTask = Hidden.asyncHideQueue();
404+
if (hideTask != null) {
405+
try {
406+
hideTask.get();
407+
} catch (Exception e) {
408+
e.printStackTrace();
409+
}
410+
}
402411
if ((!NetworkUtil.isConnected(context) && !Authentication.didOnline)
403412
|| MainActivity.isRestart) {
404413
Log.v(LogUtil.getTag(), "Using offline data");

app/src/main/java/me/ccrama/redditslide/Fragments/MultiredditView.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
302302
for (int firstVisibleItem : firstVisibleItems) {
303303
pastVisiblesItems = firstVisibleItem;
304304
if (SettingValues.scrollSeen && pastVisiblesItems > 0 && SettingValues.storeHistory) {
305-
HasSeen.addSeenScrolling(posts.posts.get(pastVisiblesItems - 1).getFullName());
305+
HasSeen.addSeenScrolling(posts.posts.get(pastVisiblesItems - 1));
306306
}
307307
}
308308
}

app/src/main/java/me/ccrama/redditslide/Fragments/NewsView.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -582,8 +582,7 @@ public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
582582
&& pastVisiblesItems > 0
583583
&& SettingValues.storeHistory) {
584584
HasSeen.addSeenScrolling(
585-
posts.posts.get(pastVisiblesItems - 1)
586-
.getFullName());
585+
posts.posts.get(pastVisiblesItems - 1));
587586
}
588587
}
589588
}

app/src/main/java/me/ccrama/redditslide/Fragments/SubmissionsView.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -635,8 +635,7 @@ public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
635635
if (SettingValues.scrollSeen
636636
&& pastVisiblesItems > 0
637637
&& SettingValues.storeHistory) {
638-
HasSeen.addSeenScrolling(posts.posts.get(pastVisiblesItems - 1)
639-
.getFullName());
638+
HasSeen.addSeenScrolling(posts.posts.get(pastVisiblesItems - 1));
640639
}
641640
}
642641
}

app/src/main/java/me/ccrama/redditslide/HasSeen.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,13 @@ public static void addSeen(String fullname) {
166166
}
167167
}
168168

169-
public static void addSeenScrolling(String fullname) {
169+
public static void addSeenScrolling(final Submission submission) {
170170
ensureInitialized();
171-
171+
boolean hide = false;
172+
String fullname = submission.getFullName();
172173
if (fullname.contains("t3_")) {
173174
fullname = fullname.substring(3);
175+
hide = true;
174176
}
175177

176178
hasSeen.add(fullname);
@@ -182,5 +184,8 @@ public static void addSeenScrolling(String fullname) {
182184
SynccitRead.newVisited.add(fullname);
183185
SynccitRead.visitedIds.add(fullname);
184186
}
187+
if (hide) {
188+
Hidden.addSubmissionToHideQueue(submission);
189+
}
185190
}
186191
}

app/src/main/java/me/ccrama/redditslide/Hidden.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,25 @@
11
package me.ccrama.redditslide;
22

33
import android.os.AsyncTask;
4+
import android.util.Log;
5+
46
import net.dean.jraw.managers.AccountManager;
57
import net.dean.jraw.models.Contribution;
68
import net.dean.jraw.models.Submission;
79

10+
import java.util.ArrayList;
11+
import java.util.Collection;
12+
import java.util.HashMap;
813
import java.util.HashSet;
14+
import java.util.LinkedList;
915
import java.util.Set;
1016

1117
/**
1218
* Created by carlo_000 on 10/16/2015.
1319
*/
1420
public class Hidden {
1521
private static final Set<String> id = new HashSet<>();
22+
private static final HashMap<String, Submission> hideQueue = new HashMap<>();
1623

1724
private static void setHiddenAsync(boolean hidden, final Submission contribution) {
1825
new AsyncTask<Void, Void, Void>() {
@@ -43,4 +50,35 @@ public static boolean getHidden(final String fullname) {
4350
return id.contains(fullname);
4451
}
4552

53+
public static void addSubmissionToHideQueue(final Submission submission) {
54+
if (hideQueue.containsKey(submission.getFullName())) {
55+
return;
56+
}
57+
Log.i("HideDebug", "Added " + submission.getFullName() + " to hide queue");
58+
hideQueue.put(submission.getFullName(), submission);
59+
}
60+
61+
public static AsyncTask<Void, Void, Void> asyncHideQueue() {
62+
if (hideQueue.isEmpty()) {
63+
return null;
64+
}
65+
66+
final ArrayList<Submission> submissions = new ArrayList<>(hideQueue.values());
67+
final Submission firstSubmission = submissions.get(0);
68+
final Submission[] remainingSubmissions = submissions.subList(1, submissions.size()).toArray(new Submission[0]);
69+
hideQueue.clear();
70+
71+
return new AsyncTask<Void, Void, Void>() {
72+
@Override
73+
protected Void doInBackground(Void[] params) {
74+
try {
75+
new AccountManager(Authentication.reddit).hide(true, firstSubmission, remainingSubmissions);
76+
} catch (Exception e) {
77+
e.printStackTrace();
78+
}
79+
return null;
80+
}
81+
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
82+
}
83+
4684
}

0 commit comments

Comments
 (0)