import "./App.css"; import "bootstrap/dist/css/bootstrap.min.css"; import * as base64 from "base-64"; import { Client } from "jmap-client-ts"; import { FetchTransport } from "jmap-client-ts/lib/utils/fetch-transport"; //import MailboxList from "./Mailbox"; import AuthModal from "./AuthModal"; import React, { useEffect, useState } from "react"; interface IAuth { email: string; password: string; } interface IAppState { auth: IAuth; } const App = () => { const [state, setInternalState] = useState(null); // When the user provides credentials const onLogin = (email: string, password: string) => { // Store the provided credentials for now const state = { auth: { email: email, password: password } }; setInternalState(state); localStorage.setItem("auth", JSON.stringify(state.auth)); doLogin(state.auth); }; // Make the request to get system metadata const doLogin = (auth: IAuth) => { const domain = auth.email.split("@")[1]; const well_known_url = "https://" + domain + "/.well-known/jmap"; const basic_auth = "Basic " + base64.encode(auth.email + ":" + auth.password); let client = new Client({ accessToken: "fake token", httpHeaders: { Authorization: basic_auth }, sessionUrl: well_known_url, transport: new FetchTransport(fetch.bind(window)), }); client .fetchSession() .then((response) => console.log(response)) .catch((error) => console.error(error)); return; /* let headers = new Headers(); headers.append("Authorization", basic_auth); fetch(well_known_url, { method: "GET", headers: headers, }) .then(response => response.json()) .then(data => { console.log(data); }) .catch(error => console.error(error));*/ }; const loadAuth = () => { const data = localStorage.getItem("auth"); if (!data) return; const auth = JSON.parse(data); setInternalState(auth); doLogin(auth); }; useEffect(() => { loadAuth(); }, []); return (
{state && state.auth ? (

{state.auth.email}

) : ( )}
); }; export default App;