Make sure /compose/ can really run standalone

Passing `masto` to new window is a nice hack, but only works when passed from window.opener

When standalone, need to login again
This commit is contained in:
Lim Chee Aun 2022-12-15 11:43:24 +08:00
parent a115639a99
commit 2485bb945d

View file

@ -3,15 +3,38 @@ import './index.css';
import './app.css';
import '@github/time-elements';
import { login } from 'masto';
import { render } from 'preact';
import { useEffect, useState } from 'preact/hooks';
import Compose from './components/compose';
import store from './utils/store';
if (window.opener) {
console = window.opener.console;
}
(async () => {
if (window.masto) return;
console.warn('window.masto not found. Trying to log in...');
try {
const accounts = store.local.getJSON('accounts') || [];
const currentAccount = store.session.get('currentAccount');
const account =
accounts.find((a) => a.info.id === currentAccount) || accounts[0];
const instanceURL = account.instanceURL;
const accessToken = account.accessToken;
window.masto = await login({
url: `https://${instanceURL}`,
accessToken,
});
console.info('Logged in successfully.');
} catch (e) {
console.error(e);
alert('Failed to log in. Please try again.');
}
})();
function App() {
const [uiState, setUIState] = useState('default');