X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdatabase%2Fmemory%2FMemoryFriendDatabase.java;h=692d7c42ddbac6f2325a79f01f2e5190dee1346c;hp=0be87389428b21f0774e7f7ca28f47bce0ab018f;hb=52014e28ee29c9620dbcc842d8bf543aaadead9e;hpb=f229fe41f708d2b275c20ceb9aba5993761218a3 diff --git a/src/main/java/net/pterodactylus/sone/database/memory/MemoryFriendDatabase.java b/src/main/java/net/pterodactylus/sone/database/memory/MemoryFriendDatabase.java index 0be8738..692d7c4 100644 --- a/src/main/java/net/pterodactylus/sone/database/memory/MemoryFriendDatabase.java +++ b/src/main/java/net/pterodactylus/sone/database/memory/MemoryFriendDatabase.java @@ -4,6 +4,9 @@ import java.util.Collection; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; @@ -48,6 +51,9 @@ class MemoryFriendDatabase { try { if (soneFriends.put(localSoneId, friendSoneId)) { configurationLoader.saveFriends(localSoneId, soneFriends.get(localSoneId)); + if (configurationLoader.getSoneFollowingTime(friendSoneId) == null) { + configurationLoader.setSoneFollowingTime(friendSoneId, System.currentTimeMillis()); + } } } finally { lock.writeLock().unlock(); @@ -60,12 +66,24 @@ class MemoryFriendDatabase { try { if (soneFriends.remove(localSoneId, friendSoneId)) { configurationLoader.saveFriends(localSoneId, soneFriends.get(localSoneId)); + boolean unfollowedSoneStillFollowed = false; + for (String soneId : soneFriends.keys()) { + unfollowedSoneStillFollowed |= getFriends(soneId).contains(friendSoneId); + } + if (!unfollowedSoneStillFollowed) { + configurationLoader.removeSoneFollowingTime(friendSoneId); + } } } finally { lock.writeLock().unlock(); } } + @Nullable + Long getFollowingTime(@Nonnull String soneId) { + return configurationLoader.getSoneFollowingTime(soneId); + } + private void loadFriends(String localSoneId) { lock.writeLock().lock(); try {