From f38b043aa19b3d8123684a490a30e1e8c00666c3 Mon Sep 17 00:00:00 2001 From: mkljczk Date: Fri, 6 Dec 2024 16:46:47 +0100 Subject: [PATCH] fetch custom emojis with auth token Signed-off-by: mkljczk --- .../api/session/AccountSessionManager.java | 34 +++++++++---------- .../android/fragments/ComposeFragment.java | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/api/session/AccountSessionManager.java b/mastodon/src/main/java/org/joinmastodon/android/api/session/AccountSessionManager.java index 58252c51a6..0507899dd5 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/api/session/AccountSessionManager.java +++ b/mastodon/src/main/java/org/joinmastodon/android/api/session/AccountSessionManager.java @@ -98,11 +98,11 @@ private AccountSessionManager(){ File file=new File(MastodonApp.context.getFilesDir(), "accounts.json"); if(!file.exists()) return; - HashSet domains=new HashSet<>(); + HashMap domains=new HashMap<>(); try(FileInputStream in=new FileInputStream(file)){ SessionsStorageWrapper w=MastodonAPIController.gson.fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), SessionsStorageWrapper.class); for(AccountSession session:w.accounts){ - domains.add(session.domain.toLowerCase()); + domains.put(session.domain.toLowerCase(), session.token); sessions.put(session.getID(), session); } }catch(Exception x){ @@ -126,7 +126,7 @@ public void addAccount(Instance instance, Token token, Account self, Application wrapper.instance = instance; MastodonAPIController.runInBackground(()->writeInstanceInfoFile(wrapper, instance.uri)); - updateMoreInstanceInfo(instance, instance.uri); + updateMoreInstanceInfo(instance, instance.uri, token); if (!UnifiedPush.getDistributor(context).isEmpty()) { UnifiedPush.registerApp( context, @@ -303,9 +303,9 @@ public void maybeUpdateLocalInfo(){ public void maybeUpdateLocalInfo(AccountSession activeSession){ long now=System.currentTimeMillis(); - HashSet domains=new HashSet<>(); + HashMap domains=new HashMap<>(); for(AccountSession session:sessions.values()){ - domains.add(session.domain.toLowerCase()); + domains.put(session.domain.toLowerCase(), session.token); if(session == activeSession || now-session.infoLastUpdated>24L*3600_000L){ session.reloadPreferences(null); updateSessionLocalInfo(session); @@ -319,12 +319,12 @@ public void maybeUpdateLocalInfo(AccountSession activeSession){ } } - private void maybeUpdateCustomEmojis(Set domains, String activeDomain){ + private void maybeUpdateCustomEmojis(HashMap domains, String activeDomain){ long now=System.currentTimeMillis(); - for(String domain:domains){ + for(String domain:domains.keySet()){ Long lastUpdated=instancesLastUpdated.get(domain); if(domain.equals(activeDomain) || lastUpdated==null || now-lastUpdated>24L*3600_000L){ - updateInstanceInfo(domain); + updateInstanceInfo(domain, domains.get(domain)); } } } @@ -366,13 +366,13 @@ public void onError(ErrorResponse error){ .exec(session.getID()); } - public void updateInstanceInfo(String domain){ + public void updateInstanceInfo(String domain, Token token){ new GetInstance() .setCallback(new Callback<>(){ @Override public void onSuccess(Instance instance){ instances.put(domain, instance); - updateMoreInstanceInfo(instance, domain); + updateMoreInstanceInfo(instance, domain, token); } @Override @@ -383,22 +383,22 @@ public void onError(ErrorResponse error){ .execNoAuth(domain); } - public void updateMoreInstanceInfo(Instance instance, String domain) { + public void updateMoreInstanceInfo(Instance instance, String domain, Token token) { new GetInstance.V2().setCallback(new Callback<>() { @Override public void onSuccess(Instance.V2 v2) { if (instance != null) instance.v2 = v2; - updateInstanceEmojis(instance, domain); + updateInstanceEmojis(instance, domain, token); } @Override public void onError(ErrorResponse errorResponse) { - updateInstanceEmojis(instance, domain); + updateInstanceEmojis(instance, domain, token); } }).execNoAuth(instance.uri); } - private void updateInstanceEmojis(Instance instance, String domain){ + private void updateInstanceEmojis(Instance instance, String domain, Token token){ new GetCustomEmojis() .setCallback(new Callback<>(){ @Override @@ -420,7 +420,7 @@ public void onError(ErrorResponse error){ MastodonAPIController.runInBackground(()->writeInstanceInfoFile(wrapper, domain)); } }) - .execNoAuth(domain); + .exec(domain, token); } private File getInstanceInfoFile(String domain){ @@ -440,8 +440,8 @@ private void writeInstanceInfoFile(InstanceInfoStorageWrapper emojis, String dom } } - private void readInstanceInfo(Set domains){ - for(String domain:domains){ + private void readInstanceInfo(HashMap domains){ + for(String domain:domains.keySet()){ try(FileInputStream in=new FileInputStream(getInstanceInfoFile(domain))){ InputStreamReader reader=new InputStreamReader(in, StandardCharsets.UTF_8); InstanceInfoStorageWrapper emojis=MastodonAPIController.gson.fromJson(reader, InstanceInfoStorageWrapper.class); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java index 0c87e48e99..f2df498371 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java @@ -272,7 +272,7 @@ public void onCreate(Bundle savedInstanceState){ return; } if(customEmojis.isEmpty()){ - AccountSessionManager.getInstance().updateInstanceInfo(instanceDomain); + AccountSessionManager.getInstance().updateInstanceInfo(instanceDomain, session.token); } Bundle bundle = savedInstanceState != null ? savedInstanceState : getArguments();