mirror of
https://github.com/MercuryWorkshop/adrift.git
synced 2025-05-12 22:00:02 -04:00
move firebase auth into SignalFirebase.ts
This commit is contained in:
parent
9549b9abaa
commit
0b2647554e
3 changed files with 47 additions and 59 deletions
|
@ -3,6 +3,7 @@ import { getDatabase, onValue, ref, set, remove } from "firebase/database";
|
|||
|
||||
import { v4 as uuid } from "uuid";
|
||||
import { Answer } from "./RTCTransport";
|
||||
import { getAuth, signInWithEmailAndPassword } from "firebase/auth";
|
||||
|
||||
|
||||
export async function signalSwarm(offer: string): Promise<Answer> {
|
||||
|
@ -38,4 +39,29 @@ export async function signalSwarm(offer: string): Promise<Answer> {
|
|||
});
|
||||
|
||||
});
|
||||
}
|
||||
export async function signalAccount(offer: string, email: string, password: string): Promise<Answer> {
|
||||
|
||||
let auth = getAuth();
|
||||
let creds = await signInWithEmailAndPassword(auth, email, password);
|
||||
|
||||
const db = getDatabase();
|
||||
let peer = ref(db, `/peers/${creds.user.uid}`);
|
||||
|
||||
|
||||
|
||||
set(peer, offer);
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
onValue(peer, async (snapshot) => {
|
||||
const str = snapshot.val();
|
||||
if (str) {
|
||||
let data = JSON.parse(str);
|
||||
if (data && data.answer && data.candidates) {
|
||||
remove(peer);
|
||||
resolve(data);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
|
@ -1,9 +1,5 @@
|
|||
<script lang="ts">
|
||||
import {
|
||||
BareClient,
|
||||
registerRemoteListener,
|
||||
setBareClientImplementation,
|
||||
} from "bare-client-custom";
|
||||
import { setBareClientImplementation } from "bare-client-custom";
|
||||
import {
|
||||
AdriftBareClient,
|
||||
Connection,
|
||||
|
@ -19,14 +15,20 @@
|
|||
TextField,
|
||||
} from "m3-svelte";
|
||||
|
||||
import { getAuth, signInWithEmailAndPassword } from "firebase/auth";
|
||||
import { getDatabase, onValue, ref, set } from "firebase/database";
|
||||
import type { Transport } from "protocol";
|
||||
|
||||
import Proxy from "./Proxy.svelte";
|
||||
import { initializeApp } from "firebase/app";
|
||||
|
||||
import TrackerList from "tracker-list";
|
||||
|
||||
enum ReadyState {
|
||||
Idle,
|
||||
Connecting,
|
||||
Connected,
|
||||
}
|
||||
let state = ReadyState.Idle;
|
||||
|
||||
let transport: Transport;
|
||||
|
||||
let rtctransport: RTCTransport | undefined;
|
||||
|
@ -36,11 +38,6 @@
|
|||
|
||||
let connectionState = "";
|
||||
|
||||
if (!import.meta.env.VITE_ADRIFT_SINGLEFILE) {
|
||||
console.log("registering bare-client-custom");
|
||||
registerRemoteListener();
|
||||
}
|
||||
|
||||
function onTransportOpen() {
|
||||
console.log("Transport opened");
|
||||
|
||||
|
@ -85,36 +82,19 @@
|
|||
await initFirebase();
|
||||
rtctransport = transport = createRTCTransport();
|
||||
|
||||
let auth = getAuth();
|
||||
let creds = await signInWithEmailAndPassword(auth, email, password);
|
||||
state = ReadyState.Connecting;
|
||||
|
||||
const db = getDatabase();
|
||||
let peer = ref(db, `/peers/${creds.user.uid}`);
|
||||
|
||||
let offer = await rtctransport.createOffer();
|
||||
|
||||
connectionState = "Finding your node...";
|
||||
|
||||
set(peer, JSON.stringify(offer));
|
||||
|
||||
onValue(peer, async (snapshot) => {
|
||||
const str = snapshot.val();
|
||||
if (str) {
|
||||
console.log(str);
|
||||
let data = JSON.parse(str);
|
||||
console.log(data);
|
||||
if (data && data.answer && data.candidates) {
|
||||
set(peer, null);
|
||||
const { answer, candidates } = data;
|
||||
connectionState = "Linking to node...";
|
||||
await new Promise((r) => {
|
||||
setTimeout(r, 1000);
|
||||
});
|
||||
rtctransport?.answer(answer, candidates);
|
||||
}
|
||||
}
|
||||
let answer = await SignalFirebase.signalAccount(
|
||||
JSON.stringify(offer),
|
||||
email,
|
||||
password
|
||||
);
|
||||
connectionState = "Linking to node...";
|
||||
await new Promise((r) => {
|
||||
setTimeout(r, 1000);
|
||||
});
|
||||
rtctransport.answer(answer.answer, answer.candidates);
|
||||
}
|
||||
|
||||
async function connectSwarm() {
|
||||
|
@ -159,27 +139,6 @@
|
|||
console.log("onclose")
|
||||
);
|
||||
}
|
||||
|
||||
(window as any).bare = new BareClient();
|
||||
(window as any).myWsTest = () => {
|
||||
// const url = "wss://ws.postman-echo.com/raw";
|
||||
const url = "ws://127.0.0.1:3002/";
|
||||
const ws = ((window as any).ws = (
|
||||
(window as any).bare as BareClient
|
||||
).createWebSocket(url, ["a", "b"], {}));
|
||||
ws.onopen = () => console.log("onopen");
|
||||
ws.addEventListener("open", () => console.log("open listener"));
|
||||
ws.onclose = () => console.error(new Error("onclose"));
|
||||
ws.addEventListener("close", (e) => console.log("close listener", e));
|
||||
ws.onmessage = (e) => console.log("message", e);
|
||||
};
|
||||
|
||||
enum ReadyState {
|
||||
Idle,
|
||||
Connecting,
|
||||
Connected,
|
||||
}
|
||||
let state = ReadyState.Idle;
|
||||
</script>
|
||||
|
||||
{#if state == ReadyState.Connected}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { registerRemoteListener } from "bare-client-custom";
|
||||
import App from "./App.svelte";
|
||||
import "./index.css";
|
||||
if (import.meta.env.VITE_ADRIFT_DEV) {
|
||||
|
@ -18,5 +19,7 @@ const app = new App({
|
|||
|
||||
if (!import.meta.env.VITE_ADRIFT_SINGLEFILE) {
|
||||
navigator.serviceWorker.register("/sw.js");
|
||||
console.log("registering bare-client-custom");
|
||||
registerRemoteListener();
|
||||
}
|
||||
export default app;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue