short share urls

This commit is contained in:
tim
2025-04-23 12:55:49 -04:00
parent 6f7388bb10
commit 441a514acc
8 changed files with 53 additions and 52 deletions

View File

@@ -4,6 +4,7 @@ import {changeIntervalSecs, onChartReady, setSymbol, widget} from "@/charts/char
import {usePrefStore, useStore} from "@/store/store.js";
import {lookupSymbol} from "@/charts/datafeed.js";
import {track} from "@/track.js";
import {socket} from "@/socket.js";
export async function getShareUrl() {
const co = useChartOrderStore();
@@ -26,18 +27,18 @@ export async function getShareUrl() {
}
const json = JSON.stringify(data)
console.log('sharing data', json, data)
const compressed = compressToEncodedURIComponent(json);
const imageFile = await takeSnapshot()
return import.meta.env.VITE_SERVER_URL+ `/share?i=${imageFile}&d=${compressed}`;
const snapshot = await takeSnapshot()
const code = await new Promise((resolve)=>socket.emit('share', data, snapshot, resolve))
if (code===null) return null
return import.meta.env.VITE_SHARE_URL+ '/share/'+code;
}
export function loadShareUrl() {
const urlParams = new URLSearchParams(window.location.search);
const dataStr = urlParams.get('d');
if (!dataStr) return
const json = decompressFromEncodedURIComponent(dataStr);
const data = JSON.parse(json);
export async function loadShareUrl(code) {
const data = await new Promise((resolve)=>socket.emit('shared', code, resolve))
console.log('loaded shared orders data', data)
if (data===null) return
const co = useChartOrderStore();
const s = useStore()
const ticker = `${data.chainId}|${data.symbol.route.exchange}|${data.symbol.base.a}|${data.symbol.quote.a}|${data.symbol.route.fee}`;
@@ -50,7 +51,9 @@ export function loadShareUrl() {
const prefs = usePrefStore()
prefs.selectedSymbol = ticker
for (const order of data.orders) {
// force amount to be zero so that the user MUST enter a size before confirming the placement
order.amount = 0
order.amountIsTokenA = true
order.valid = false
}
co.orders = data.orders
@@ -65,11 +68,5 @@ export function loadShareUrl() {
export async function takeSnapshot() {
const screenshotCanvas = await widget.takeClientScreenshot();
const image = await new Promise((resolve) => screenshotCanvas.toBlob(resolve));
const response = await fetch(import.meta.env.VITE_SERVER_URL + '/snapshot', {
method: 'PUT',
body: image,
credentials: 'same-origin',
});
return response.text()
return await new Promise((resolve) => screenshotCanvas.toBlob(resolve));
}