mirror of
https://github.com/MercuryWorkshop/adrift.git
synced 2025-05-13 06:10:01 -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 { v4 as uuid } from "uuid";
|
||||||
import { Answer } from "./RTCTransport";
|
import { Answer } from "./RTCTransport";
|
||||||
|
import { getAuth, signInWithEmailAndPassword } from "firebase/auth";
|
||||||
|
|
||||||
|
|
||||||
export async function signalSwarm(offer: string): Promise<Answer> {
|
export async function signalSwarm(offer: string): Promise<Answer> {
|
||||||
|
@ -39,3 +40,28 @@ 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">
|
<script lang="ts">
|
||||||
import {
|
import { setBareClientImplementation } from "bare-client-custom";
|
||||||
BareClient,
|
|
||||||
registerRemoteListener,
|
|
||||||
setBareClientImplementation,
|
|
||||||
} from "bare-client-custom";
|
|
||||||
import {
|
import {
|
||||||
AdriftBareClient,
|
AdriftBareClient,
|
||||||
Connection,
|
Connection,
|
||||||
|
@ -19,14 +15,20 @@
|
||||||
TextField,
|
TextField,
|
||||||
} from "m3-svelte";
|
} from "m3-svelte";
|
||||||
|
|
||||||
import { getAuth, signInWithEmailAndPassword } from "firebase/auth";
|
|
||||||
import { getDatabase, onValue, ref, set } from "firebase/database";
|
|
||||||
import type { Transport } from "protocol";
|
import type { Transport } from "protocol";
|
||||||
|
|
||||||
import Proxy from "./Proxy.svelte";
|
import Proxy from "./Proxy.svelte";
|
||||||
import { initializeApp } from "firebase/app";
|
import { initializeApp } from "firebase/app";
|
||||||
|
|
||||||
import TrackerList from "tracker-list";
|
import TrackerList from "tracker-list";
|
||||||
|
|
||||||
|
enum ReadyState {
|
||||||
|
Idle,
|
||||||
|
Connecting,
|
||||||
|
Connected,
|
||||||
|
}
|
||||||
|
let state = ReadyState.Idle;
|
||||||
|
|
||||||
let transport: Transport;
|
let transport: Transport;
|
||||||
|
|
||||||
let rtctransport: RTCTransport | undefined;
|
let rtctransport: RTCTransport | undefined;
|
||||||
|
@ -36,11 +38,6 @@
|
||||||
|
|
||||||
let connectionState = "";
|
let connectionState = "";
|
||||||
|
|
||||||
if (!import.meta.env.VITE_ADRIFT_SINGLEFILE) {
|
|
||||||
console.log("registering bare-client-custom");
|
|
||||||
registerRemoteListener();
|
|
||||||
}
|
|
||||||
|
|
||||||
function onTransportOpen() {
|
function onTransportOpen() {
|
||||||
console.log("Transport opened");
|
console.log("Transport opened");
|
||||||
|
|
||||||
|
@ -85,36 +82,19 @@
|
||||||
await initFirebase();
|
await initFirebase();
|
||||||
rtctransport = transport = createRTCTransport();
|
rtctransport = transport = createRTCTransport();
|
||||||
|
|
||||||
let auth = getAuth();
|
|
||||||
let creds = await signInWithEmailAndPassword(auth, email, password);
|
|
||||||
state = ReadyState.Connecting;
|
state = ReadyState.Connecting;
|
||||||
|
|
||||||
const db = getDatabase();
|
|
||||||
let peer = ref(db, `/peers/${creds.user.uid}`);
|
|
||||||
|
|
||||||
let offer = await rtctransport.createOffer();
|
let offer = await rtctransport.createOffer();
|
||||||
|
|
||||||
connectionState = "Finding your node...";
|
connectionState = "Finding your node...";
|
||||||
|
let answer = await SignalFirebase.signalAccount(
|
||||||
set(peer, JSON.stringify(offer));
|
JSON.stringify(offer),
|
||||||
|
email,
|
||||||
onValue(peer, async (snapshot) => {
|
password
|
||||||
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...";
|
connectionState = "Linking to node...";
|
||||||
await new Promise((r) => {
|
await new Promise((r) => {
|
||||||
setTimeout(r, 1000);
|
setTimeout(r, 1000);
|
||||||
});
|
});
|
||||||
rtctransport?.answer(answer, candidates);
|
rtctransport.answer(answer.answer, answer.candidates);
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function connectSwarm() {
|
async function connectSwarm() {
|
||||||
|
@ -159,27 +139,6 @@
|
||||||
console.log("onclose")
|
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>
|
</script>
|
||||||
|
|
||||||
{#if state == ReadyState.Connected}
|
{#if state == ReadyState.Connected}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { registerRemoteListener } from "bare-client-custom";
|
||||||
import App from "./App.svelte";
|
import App from "./App.svelte";
|
||||||
import "./index.css";
|
import "./index.css";
|
||||||
if (import.meta.env.VITE_ADRIFT_DEV) {
|
if (import.meta.env.VITE_ADRIFT_DEV) {
|
||||||
|
@ -18,5 +19,7 @@ const app = new App({
|
||||||
|
|
||||||
if (!import.meta.env.VITE_ADRIFT_SINGLEFILE) {
|
if (!import.meta.env.VITE_ADRIFT_SINGLEFILE) {
|
||||||
navigator.serviceWorker.register("/sw.js");
|
navigator.serviceWorker.register("/sw.js");
|
||||||
|
console.log("registering bare-client-custom");
|
||||||
|
registerRemoteListener();
|
||||||
}
|
}
|
||||||
export default app;
|
export default app;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue