2019-02-07 01:25:12 +01:00
|
|
|
import HomeServerApi from "./hs-api.js";
|
2019-02-05 00:21:50 +01:00
|
|
|
import Session from "./session.js";
|
2019-02-06 23:04:39 +01:00
|
|
|
import createIdbStorage from "./storage/idb/create.js";
|
2019-02-07 01:50:23 +01:00
|
|
|
|
|
|
|
const HOST = "localhost";
|
|
|
|
const HOMESERVER = `http://${HOST}:8008`;
|
|
|
|
const USERNAME = "bruno1";
|
|
|
|
const USER_ID = `@${USERNAME}:${HOST}`;
|
|
|
|
const PASSWORD = "testtest";
|
2019-02-04 23:31:08 +01:00
|
|
|
|
2019-02-07 00:19:14 +01:00
|
|
|
function getSessionId(userId) {
|
|
|
|
const sessionsJson = localStorage.getItem("morpheus_sessions_v1");
|
|
|
|
if (sessionsJson) {
|
|
|
|
const sessions = JSON.parse(sessionsJson);
|
|
|
|
const session = sessions.find(session => session.userId === userId);
|
|
|
|
if (session) {
|
|
|
|
return session.id;
|
|
|
|
}
|
2019-02-04 23:31:08 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-02-07 00:19:14 +01:00
|
|
|
async function login(username, password, homeserver) {
|
2019-02-07 01:25:12 +01:00
|
|
|
const hsApi = new HomeServerApi(homeserver);
|
|
|
|
const loginData = await hsApi.passwordLogin(username, password).response();
|
2019-02-07 00:19:14 +01:00
|
|
|
const sessionsJson = localStorage.getItem("morpheus_sessions_v1");
|
|
|
|
const sessions = sessionsJson ? JSON.parse(sessionsJson) : [];
|
|
|
|
const sessionId = (Math.floor(Math.random() * Number.MAX_SAFE_INTEGER)).toString();
|
|
|
|
console.log(loginData);
|
|
|
|
sessions.push({userId: loginData.user_id, id: sessionId});
|
|
|
|
localStorage.setItem("morpheus_sessions_v1", JSON.stringify(sessions));
|
|
|
|
return {sessionId, loginData};
|
|
|
|
}
|
|
|
|
|
2019-02-04 23:31:08 +01:00
|
|
|
async function main() {
|
2019-02-07 01:50:23 +01:00
|
|
|
let sessionId = getSessionId(USER_ID);
|
2019-02-07 00:19:14 +01:00
|
|
|
let loginData;
|
|
|
|
if (!sessionId) {
|
2019-02-07 01:50:23 +01:00
|
|
|
({sessionId, loginData} = await login(USERNAME, PASSWORD, HOMESERVER));
|
2019-02-07 00:19:14 +01:00
|
|
|
}
|
|
|
|
const storage = await createIdbStorage(`morpheus_session_${sessionId}`);
|
|
|
|
console.log("database created", storage);
|
2019-02-07 01:20:27 +01:00
|
|
|
const session = new Session(storage);
|
|
|
|
if (loginData) {
|
|
|
|
await session.setLoginData(loginData);
|
|
|
|
}
|
2019-02-04 23:31:08 +01:00
|
|
|
await session.load();
|
2019-02-07 01:25:12 +01:00
|
|
|
const hsApi = new HomeServerApi(HOMESERVER, session.accessToken);
|
|
|
|
console.log("session loaded", session, hsApi);
|
2019-02-07 01:20:27 +01:00
|
|
|
return;
|
2019-02-07 01:25:12 +01:00
|
|
|
const sync = new Sync(hsApi, session, storage);
|
2019-02-04 23:31:08 +01:00
|
|
|
await sync.start();
|
|
|
|
|
|
|
|
sync.on("error", err => {
|
|
|
|
console.error("sync error", err);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
main().catch(err => console.error(err));
|