mirror of
https://github.com/DiscordSRV/Ascension.git
synced 2024-11-01 08:39:31 +01:00
Add/remove linked accounts from cache when they are created/removed manually
This commit is contained in:
parent
916be86fbf
commit
3336cf0f85
@ -22,6 +22,7 @@ import com.discordsrv.api.event.bus.Subscribe;
|
|||||||
import com.discordsrv.common.DiscordSRV;
|
import com.discordsrv.common.DiscordSRV;
|
||||||
import com.discordsrv.common.event.events.player.PlayerConnectedEvent;
|
import com.discordsrv.common.event.events.player.PlayerConnectedEvent;
|
||||||
import com.discordsrv.common.linking.LinkProvider;
|
import com.discordsrv.common.linking.LinkProvider;
|
||||||
|
import com.discordsrv.common.linking.LinkStore;
|
||||||
import com.github.benmanes.caffeine.cache.AsyncCacheLoader;
|
import com.github.benmanes.caffeine.cache.AsyncCacheLoader;
|
||||||
import com.github.benmanes.caffeine.cache.AsyncLoadingCache;
|
import com.github.benmanes.caffeine.cache.AsyncLoadingCache;
|
||||||
import com.github.benmanes.caffeine.cache.Cache;
|
import com.github.benmanes.caffeine.cache.Cache;
|
||||||
@ -155,4 +156,38 @@ public abstract class CachedLinkProvider implements LinkProvider {
|
|||||||
playerToUser.get(uuid);
|
playerToUser.get(uuid);
|
||||||
linkingAllowed.remove(uuid);
|
linkingAllowed.remove(uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void addToCache(UUID playerUUID, long userId) {
|
||||||
|
playerToUser.put(playerUUID, CompletableFuture.completedFuture(userId));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void evictFromCache(UUID playerUUID) {
|
||||||
|
playerToUser.synchronous().invalidate(playerUUID);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static abstract class Store extends CachedLinkProvider implements LinkStore {
|
||||||
|
|
||||||
|
public Store(DiscordSRV discordSRV) {
|
||||||
|
super(discordSRV);
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract CompletableFuture<Void> link(@NotNull UUID playerUUID, long userId);
|
||||||
|
public abstract CompletableFuture<Void> unlink(@NotNull UUID playerUUID, long userId);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final CompletableFuture<Void> createLink(@NotNull UUID playerUUID, long userId) {
|
||||||
|
return link(playerUUID, userId).thenApply(v -> {
|
||||||
|
addToCache(playerUUID, userId);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CompletableFuture<Void> removeLink(@NotNull UUID playerUUID, long userId) {
|
||||||
|
return unlink(playerUUID, userId).thenApply(v -> {
|
||||||
|
evictFromCache(playerUUID);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,6 @@ import com.discordsrv.api.component.MinecraftComponent;
|
|||||||
import com.discordsrv.common.DiscordSRV;
|
import com.discordsrv.common.DiscordSRV;
|
||||||
import com.discordsrv.common.function.CheckedSupplier;
|
import com.discordsrv.common.function.CheckedSupplier;
|
||||||
import com.discordsrv.common.future.util.CompletableFutureUtil;
|
import com.discordsrv.common.future.util.CompletableFutureUtil;
|
||||||
import com.discordsrv.common.linking.LinkProvider;
|
|
||||||
import com.discordsrv.common.linking.LinkStore;
|
import com.discordsrv.common.linking.LinkStore;
|
||||||
import com.discordsrv.common.linking.LinkingModule;
|
import com.discordsrv.common.linking.LinkingModule;
|
||||||
import com.discordsrv.common.linking.requirelinking.RequiredLinkingModule;
|
import com.discordsrv.common.linking.requirelinking.RequiredLinkingModule;
|
||||||
@ -44,7 +43,7 @@ import java.util.concurrent.CompletableFuture;
|
|||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public class MinecraftAuthenticationLinker extends CachedLinkProvider implements LinkProvider {
|
public class MinecraftAuthenticationLinker extends CachedLinkProvider {
|
||||||
|
|
||||||
public static final String BASE_LINK_URL = DiscordSRV.WEBSITE + "/link";
|
public static final String BASE_LINK_URL = DiscordSRV.WEBSITE + "/link";
|
||||||
|
|
||||||
|
@ -21,8 +21,6 @@ package com.discordsrv.common.linking.impl;
|
|||||||
import com.discordsrv.api.component.MinecraftComponent;
|
import com.discordsrv.api.component.MinecraftComponent;
|
||||||
import com.discordsrv.common.DiscordSRV;
|
import com.discordsrv.common.DiscordSRV;
|
||||||
import com.discordsrv.common.component.util.ComponentUtil;
|
import com.discordsrv.common.component.util.ComponentUtil;
|
||||||
import com.discordsrv.common.linking.LinkProvider;
|
|
||||||
import com.discordsrv.common.linking.LinkStore;
|
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@ -33,7 +31,7 @@ import java.util.Optional;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
public class StorageLinker extends CachedLinkProvider implements LinkProvider, LinkStore {
|
public class StorageLinker extends CachedLinkProvider.Store {
|
||||||
|
|
||||||
public StorageLinker(DiscordSRV discordSRV) {
|
public StorageLinker(DiscordSRV discordSRV) {
|
||||||
super(discordSRV);
|
super(discordSRV);
|
||||||
@ -56,12 +54,12 @@ public class StorageLinker extends CachedLinkProvider implements LinkProvider, L
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture<Void> createLink(@NotNull UUID playerUUID, long userId) {
|
public CompletableFuture<Void> link(@NotNull UUID playerUUID, long userId) {
|
||||||
return discordSRV.scheduler().execute(() -> discordSRV.storage().createLink(playerUUID, userId));
|
return discordSRV.scheduler().execute(() -> discordSRV.storage().createLink(playerUUID, userId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture<Void> removeLink(@NotNull UUID playerUUID, long userId) {
|
public CompletableFuture<Void> unlink(@NotNull UUID playerUUID, long userId) {
|
||||||
return discordSRV.scheduler().execute(() -> discordSRV.storage().removeLink(playerUUID, userId));
|
return discordSRV.scheduler().execute(() -> discordSRV.storage().removeLink(playerUUID, userId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user