diff --git a/src/utils/api.js b/src/utils/api.js index 2d101915..d1c9981a 100644 --- a/src/utils/api.js +++ b/src/utils/api.js @@ -4,6 +4,7 @@ import store from './store'; import { getAccount, getAccountByAccessToken, + getAccountByInstance, getCurrentAccount, saveAccount, } from './store-utils'; @@ -249,6 +250,22 @@ export function api({ instance, accessToken, accountID, account } = {}) { }; } + const instanceAccount = getAccountByInstance(instance); + if (instanceAccount) { + const accessToken = instanceAccount.accessToken; + const client = + accountApis[instance]?.[accessToken] || + initClient({ instance, accessToken }); + const { masto, streaming } = client; + return { + masto, + streaming, + client, + authenticated: true, + instance, + }; + } + const client = apis[instance] || initClient({ instance }); const { masto, streaming, accessToken } = client; return { diff --git a/src/utils/store-utils.js b/src/utils/store-utils.js index 3c365efc..7746a080 100644 --- a/src/utils/store-utils.js +++ b/src/utils/store-utils.js @@ -10,6 +10,11 @@ export function getAccountByAccessToken(accessToken) { return accounts.find((a) => a.accessToken === accessToken); } +export function getAccountByInstance(instance) { + const accounts = store.local.getJSON('accounts') || []; + return accounts.find((a) => a.instanceURL === instance); +} + export function getCurrentAccount() { if (!window.__IGNORE_GET_ACCOUNT_ERROR__) { // Track down getCurrentAccount() calls before account-based states are initialized