package me.ccrama.redditslide;
import com.lusfold.androidkeyvaluestore.KVStore;
import com.lusfold.androidkeyvaluestore.core.KVManger;
import net.dean.jraw.models.Contribution;
import net.dean.jraw.models.Submission;
import net.dean.jraw.models.VoteDirection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import me.ccrama.redditslide.Synccit.SynccitRead;
/**
* Created by ccrama on 7/19/2015.
*/
public class HasSeen {
public static ArrayList<String> hasSeen;
public static HashMap<String, Long> seenTimes;
public static void setHasSeenContrib(List<Contribution> submissions) {
if (hasSeen == null) {
hasSeen = new ArrayList<>();
seenTimes = new HashMap<>();
}
KVManger m = KVStore.getInstance();
for (Contribution s : submissions) {
if (s instanceof Submission) {
String fullname = s.getFullName();
if (fullname.contains("t3_")) {
fullname = fullname.substring(3, fullname.length());
}
if (!m.getByContains(fullname).isEmpty() && m.get(fullname) != null) {
hasSeen.add(fullname);
try {
seenTimes.put(fullname, Long.valueOf(m.get(fullname)));
} catch (Exception e) {
}
}
}
}
}
public static void setHasSeenSubmission(List<Submission> submissions) {
if (hasSeen == null) {
hasSeen = new ArrayList<>();
seenTimes = new HashMap<>();
}
KVManger m = KVStore.getInstance();
for (Contribution s : submissions) {
String fullname = s.getFullName();
if (fullname.contains("t3_")) {
fullname = fullname.substring(3, fullname.length());
}
if (!m.getByContains(fullname).isEmpty()) {
hasSeen.add(fullname);
String value = m.get(fullname);
try {
if (value != null) seenTimes.put(fullname, Long.valueOf(value));
} catch (Exception ignored) {
}
}
}
}
public static boolean getSeen(Submission s) {
if (hasSeen == null) {
hasSeen = new ArrayList<>();
seenTimes = new HashMap<>();
}
String fullname = s.getFullName();
if (fullname.contains("t3_")) {
fullname = fullname.substring(3, fullname.length());
}
return (hasSeen.contains(fullname)
|| SynccitRead.visitedIds.contains(fullname)
|| s.getDataNode().has("visited") && s.getDataNode().get("visited").asBoolean()
|| s.getVote() != VoteDirection.NO_VOTE);
}
public static long getSeenTime(Submission s) {
if (hasSeen == null) {
hasSeen = new ArrayList<>();
seenTimes = new HashMap<>();
}
String fullname = s.getFullName();
if (fullname.contains("t3_")) {
fullname = fullname.substring(3, fullname.length());
}
if (seenTimes.containsKey(fullname)) {
return seenTimes.get(fullname);
} else {
try {
return Long.valueOf(KVStore.getInstance().get(fullname));
} catch (NumberFormatException e) {
return 0;
}
}
}
public static void addSeen(String fullname) {
if (hasSeen == null) {
hasSeen = new ArrayList<>();
}
if(seenTimes == null){
seenTimes = new HashMap<>();
}
if (fullname.contains("t3_")) {
fullname = fullname.substring(3, fullname.length());
}
hasSeen.add(fullname);
seenTimes.put(fullname, System.currentTimeMillis());
long result = KVStore.getInstance().insert(fullname, String.valueOf(System.currentTimeMillis()));
if(result == -1){
KVStore.getInstance().update(fullname, String.valueOf(System.currentTimeMillis()));
}
if (!fullname.contains("t1_")) {
SynccitRead.newVisited.add(fullname);
SynccitRead.visitedIds.add(fullname);
}
}
public static void addSeenScrolling(String fullname) {
if (hasSeen == null) {
hasSeen = new ArrayList<>();
}
if(seenTimes == null){
seenTimes = new HashMap<>();
}
if (fullname.contains("t3_")) {
fullname = fullname.substring(3, fullname.length());
}
hasSeen.add(fullname);
seenTimes.put(fullname, System.currentTimeMillis());
KVStore.getInstance().insert(fullname, String.valueOf(System.currentTimeMillis()));
if (!fullname.contains("t1_")) {
SynccitRead.newVisited.add(fullname);
SynccitRead.visitedIds.add(fullname);
}
}
}