Spaces:
Paused
Paused
| import { Urbit } from "@urbit/http-api"; | |
| let patched = false; | |
| export function ensureUrbitConnectPatched() { | |
| if (patched) { | |
| return; | |
| } | |
| patched = true; | |
| Urbit.prototype.connect = async function patchedConnect() { | |
| const resp = await fetch(`${this.url}/~/login`, { | |
| method: "POST", | |
| body: `password=${this.code}`, | |
| credentials: "include", | |
| }); | |
| if (resp.status >= 400) { | |
| throw new Error(`Login failed with status ${resp.status}`); | |
| } | |
| const cookie = resp.headers.get("set-cookie"); | |
| if (cookie) { | |
| const match = /urbauth-~([\w-]+)/.exec(cookie); | |
| if (match) { | |
| if (!(this as unknown as { ship?: string | null }).ship) { | |
| (this as unknown as { ship?: string | null }).ship = match[1]; | |
| } | |
| (this as unknown as { nodeId?: string }).nodeId = match[1]; | |
| } | |
| (this as unknown as { cookie?: string }).cookie = cookie; | |
| } | |
| await (this as typeof Urbit.prototype).getShipName(); | |
| await (this as typeof Urbit.prototype).getOurName(); | |
| }; | |
| } | |
| export { Urbit }; | |