Skip to content

Commit

Permalink
Move app info cache to service, refresh instead of expire
Browse files Browse the repository at this point in the history
  • Loading branch information
schnapster committed Dec 10, 2023
1 parent 0d83429 commit 47e97c2
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 11 deletions.
9 changes: 0 additions & 9 deletions src/main/java/space/npstr/icu/Launcher.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,11 @@

package space.npstr.icu;

import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.CompletionException;
import java.util.concurrent.TimeUnit;
import net.dv8tion.jda.api.JDAInfo;
import net.dv8tion.jda.api.entities.ApplicationInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
Expand All @@ -51,11 +47,6 @@ public class Launcher {

private final ShardManagerManager shardManagerManager;

//use something constant as the key, like Main.class
public static final Cache<Object, ApplicationInfo> APP_INFO = Caffeine.newBuilder()
.expireAfterWrite(1, TimeUnit.HOURS)
.build();

public static void main(String[] args) {
//just post the info to the console
if (args.length > 0 &&
Expand Down
10 changes: 8 additions & 2 deletions src/main/java/space/npstr/icu/discord/AdminService.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,25 +17,31 @@

package space.npstr.icu.discord;

import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import java.util.concurrent.TimeUnit;
import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.ApplicationInfo;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.User;
import org.springframework.stereotype.Service;
import space.npstr.icu.Launcher;
import space.npstr.icu.db.entities.GuildSettingsRepository;

@Service
public class AdminService {

private final GuildSettingsRepository guildSettingsRepo;

private final Cache<Object, ApplicationInfo> applicationInfoCache = Caffeine.newBuilder()
.refreshAfterWrite(1, TimeUnit.HOURS)
.build();

public AdminService(GuildSettingsRepository guildSettingsRepo) {
this.guildSettingsRepo = guildSettingsRepo;
}

public boolean isBotOwner(User user) {
ApplicationInfo appInfo = Launcher.APP_INFO.get(Launcher.class, __ -> user.getJDA().retrieveApplicationInfo().complete());
ApplicationInfo appInfo = applicationInfoCache.get("foo", __ -> user.getJDA().retrieveApplicationInfo().complete());
return appInfo != null
&& appInfo.getOwner().getIdLong() == user.getIdLong();
}
Expand Down

0 comments on commit 47e97c2

Please sign in to comment.