From 8ca768b95729fb87f1ff1e5fd6754cd691a84cb0 Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Sat, 23 Dec 2023 23:07:08 +0800 Subject: [PATCH] Apply auth for remote-instance API calls --- src/utils/api.js | 17 +++++++++++++++++ src/utils/store-utils.js | 5 +++++ 2 files changed, 22 insertions(+) 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