X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdatabase%2Fmemory%2FMemoryFriendDatabase.java;h=a2d51a3540c56ffe04876d40951de848e3f7c620;hb=cbd6de75a2a96966a2381100c5b643feea702458;hp=180284327b02ffadfb862e271af9172232b332fa;hpb=2524f4d47c56874a263f9e53ec5c4035f2baa7e0;p=Sone.git 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 1802843..a2d51a3 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; @@ -43,10 +46,14 @@ class MemoryFriendDatabase { } void addFriend(String localSoneId, String friendSoneId) { + loadFriends(localSoneId); lock.writeLock().lock(); 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(); @@ -54,6 +61,7 @@ class MemoryFriendDatabase { } void removeFriend(String localSoneId, String friendSoneId) { + loadFriends(localSoneId); lock.writeLock().lock(); try { if (soneFriends.remove(localSoneId, friendSoneId)) { @@ -64,6 +72,11 @@ class MemoryFriendDatabase { } } + @Nullable + Long getFollowingTime(@Nonnull String soneId) { + return configurationLoader.getSoneFollowingTime(soneId); + } + private void loadFriends(String localSoneId) { lock.writeLock().lock(); try {