spam log removal; mobile share fixes
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
<link href="https://fonts.googleapis.com/css2?family=Orbitron&family=Saira+Semi+Condensed&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<script src="/src/debug_console.js"></script>
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-L6F3Z6SBC7"></script>
|
||||
<script>
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
"flexsearch": "^0.7.43",
|
||||
"lru-cache": "^11.0.2",
|
||||
"luxon": "^3.4.4",
|
||||
"lz-string": "^1.5.0",
|
||||
"pinia": "2.1.6",
|
||||
"pinia-plugin-persistedstate": "^4.1.3",
|
||||
"roboto-fontface": "*",
|
||||
|
||||
@@ -10,7 +10,7 @@ export function subOHLC( chainId, pool, period ) {
|
||||
// console.log('subOHLC', chainId, pool, period, ckey, ohlcSubCounts[ckey])
|
||||
if (!(ckey in ohlcSubCounts) || ohlcSubCounts[ckey] === 0) {
|
||||
ohlcSubCounts[ckey] = 1
|
||||
console.log('subscribing OHLCs', chainId, key)
|
||||
// console.log('subscribing OHLCs', chainId, key)
|
||||
socket.emit('subOHLCs', chainId, [key])
|
||||
} else
|
||||
ohlcSubCounts[ckey]++
|
||||
@@ -30,7 +30,7 @@ export function refreshOHLCSubs() {
|
||||
}
|
||||
keys.push(`${pool}|${period}`)
|
||||
}
|
||||
console.log('refreshing OHLC subs', keys)
|
||||
// console.log('refreshing OHLC subs', keys)
|
||||
socket.emit('subOHLCs', chainId, keys)
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ export function unsubOHLC( chainId, pool, period ) {
|
||||
} else {
|
||||
ohlcSubCounts[ckey]--
|
||||
if (ohlcSubCounts[ckey] === 0) {
|
||||
console.log('unsubscribing OHLCs', chainId, key)
|
||||
// console.log('unsubscribing OHLCs', chainId, key)
|
||||
// noinspection JSCheckFunctionSignatures
|
||||
socket.emit('unsubOHLCs', chainId, [key])
|
||||
}
|
||||
|
||||
@@ -27,11 +27,11 @@ export function removeSymbolChangedCallback(cb) {
|
||||
function symbolChanged(symbol) {
|
||||
const info = symbol===null ? (defaultSymbol===null?'default':defaultSymbol) : lookupSymbol(symbol.ticker)
|
||||
co.selectedSymbol = info
|
||||
console.log('setting prefs ticker', info.ticker)
|
||||
// console.log('setting prefs ticker', info.ticker)
|
||||
prefs.selectedTicker = info.ticker
|
||||
symbolChangedCbs.forEach((cb) => cb(info))
|
||||
updateFeeDropdown()
|
||||
console.log('symbol changed', info)
|
||||
// console.log('symbol changed', info)
|
||||
}
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ export function changeIntervalSecs(secs) {
|
||||
|
||||
function dataLoaded() {
|
||||
const range = chartMeanRange()
|
||||
console.log('new mean range', range,)
|
||||
// console.log('new mean range', range,)
|
||||
co.meanRange = range
|
||||
}
|
||||
|
||||
@@ -212,7 +212,7 @@ let chartInitCbs = []
|
||||
|
||||
|
||||
function initChart() {
|
||||
console.log('init chart')
|
||||
// console.log('init chart')
|
||||
chart = widget.activeChart()
|
||||
const themeName = useStore().theme;
|
||||
widget.changeTheme(themeName).catch((e)=>console.warn(`Could not change theme to ${themeName}`, e))
|
||||
@@ -240,7 +240,7 @@ function initChart() {
|
||||
cb(widget, chart)
|
||||
chartInitCbs = []
|
||||
}, 1)
|
||||
console.log('chart ready')
|
||||
// console.log('chart ready')
|
||||
}
|
||||
|
||||
|
||||
@@ -285,7 +285,7 @@ let drawingCallbacks = null
|
||||
|
||||
export function drawShape(shapeType, ...callbacks) {
|
||||
// puts the chart into a line-drawing mode for a new shape
|
||||
console.log('drawShape', callbacks, shapeType.name, shapeType.code)
|
||||
// console.log('drawShape', callbacks, shapeType.name, shapeType.code)
|
||||
if( drawingCallbacks )
|
||||
invokeCallbacks(drawingCallbacks, 'onUndraw')
|
||||
drawingCallbacks = callbacks
|
||||
@@ -351,7 +351,7 @@ const shapeCallbacks = {}
|
||||
|
||||
function onSelectedLineToolChanged() {
|
||||
const tool = widget.selectedLineTool();
|
||||
console.log('line tool changed', tool)
|
||||
// console.log('line tool changed', tool)
|
||||
if (drawingTool===null)
|
||||
drawingTool = tool
|
||||
else if (tool!==drawingTool && co.drawing)
|
||||
|
||||
@@ -140,7 +140,7 @@ function addSymbol(chainId, p, base, quote, inverted) {
|
||||
// console.log(`invertedDefault(${symbolInfo.base.s}, ${symbolInfo.quote.s})`,invertedDefault(symbolInfo.base.a, symbolInfo.quote.a))
|
||||
// }
|
||||
if (defaultSymbol===null && !invertedDefault(symbolInfo.base.a, symbolInfo.quote.a)) {
|
||||
console.log('setting default symbol', symbolInfo.base.s, symbolInfo.quote.s, symbolInfo.base.a, symbolInfo.quote.a)
|
||||
// console.log('setting default symbol', symbolInfo.base.s, symbolInfo.quote.s, symbolInfo.base.a, symbolInfo.quote.a)
|
||||
defaultSymbol = _symbols[ticker]
|
||||
}
|
||||
log('new symbol', ticker, _symbols[ticker])
|
||||
@@ -381,7 +381,7 @@ export const DataFeed = {
|
||||
onResolveErrorCallback,
|
||||
extension
|
||||
) {
|
||||
console.log('[resolveSymbol]: Method call', symbolName);
|
||||
// console.log('[resolveSymbol]: Method call', symbolName);
|
||||
const symbols = getAllSymbols();
|
||||
const symbolItem = symbolName === 'default' ? defaultSymbol : symbols[symbolName]
|
||||
if (!symbolItem) {
|
||||
@@ -451,7 +451,7 @@ export const DataFeed = {
|
||||
// volume_precision: 2,
|
||||
data_status: 'streaming',
|
||||
};
|
||||
console.log('[resolveSymbol]: Symbol resolved', symbolName);
|
||||
// console.log('[resolveSymbol]: Symbol resolved', symbolName);
|
||||
onSymbolResolvedCallback(symbolInfo)
|
||||
},
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ function addDay(timestamp) {
|
||||
function addMonth(timestamp) {
|
||||
const date = new Date(timestamp*1000)
|
||||
const result = Date.UTC(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate()) / 1000
|
||||
console.log('addMonth', timestamp, result, new Date(timestamp*1000), new Date(result*1000))
|
||||
// console.log('addMonth', timestamp, result, new Date(timestamp*1000), new Date(result*1000))
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ async function getUrl(url) {
|
||||
|
||||
|
||||
export async function loadOHLC (symbol, contract, from, to, tvRes) {
|
||||
console.log('loadOHLC', tvRes, new Date(1000*from), new Date(1000*to), symbol, contract);
|
||||
// console.log('loadOHLC', tvRes, new Date(1000*from), new Date(1000*to), symbol, contract);
|
||||
let chainId
|
||||
let bars = [];
|
||||
let inverted = false;
|
||||
@@ -179,7 +179,7 @@ export async function loadOHLC (symbol, contract, from, to, tvRes) {
|
||||
if (response.length) {
|
||||
const [start,end,price] = response.split(',')
|
||||
seriesStarts[baseUrl] = parseInt(start)
|
||||
console.log(`Series ${baseUrl} starts at ${new Date(start*1000)}`)
|
||||
// console.log(`Series ${baseUrl} starts at ${new Date(start*1000)}`)
|
||||
}
|
||||
else {
|
||||
console.error(`Bad response while fetching ${baseUrl+'quote.csv'}`)
|
||||
|
||||
@@ -85,7 +85,6 @@ const tokenOut = computed(()=>props.order.buy ? co.baseToken : co.quoteToken)
|
||||
|
||||
const builtAny = ref(false)
|
||||
|
||||
console.log('order', props.order)
|
||||
function build(order, component, options={}) {
|
||||
track('build', {builder:component})
|
||||
builtAny.value = true
|
||||
|
||||
@@ -80,7 +80,7 @@ const os = useOrderStore()
|
||||
const ws = useWalletStore()
|
||||
|
||||
function changeSymbol(symbol) {
|
||||
console.log('changeSymbol', symbol)
|
||||
// console.log('changeSymbol', symbol)
|
||||
os.tokenA = symbol.base
|
||||
os.tokenB = symbol.quote
|
||||
// routeFinder.invoke()
|
||||
|
||||
@@ -55,7 +55,7 @@ const s = useStore()
|
||||
const co = useChartOrderStore()
|
||||
|
||||
const theme = useTheme().current
|
||||
console.log('theme', theme.value)
|
||||
// console.log('theme', theme.value)
|
||||
const sideColor = computed(()=>new Color(props.order.buy?theme.value.colors.success:theme.value.colors.error).darken(0.2).string())
|
||||
const switchModel = computed({
|
||||
get() {return !props.order.buy},
|
||||
|
||||
@@ -7,11 +7,20 @@
|
||||
import {loadShareUrl} from "@/share.js";
|
||||
import {router} from "@/router/router.js";
|
||||
import {useRoute} from "vue-router";
|
||||
import {socket} from "@/socket.js";
|
||||
|
||||
const route = useRoute()
|
||||
const code = route.params.code
|
||||
loadShareUrl(code).then(()=> router.replace('/order')).catch((e)=> {console.error(e); router.replace('/order')})
|
||||
loadShareUrl(code).then((ok)=> {
|
||||
if (ok) {
|
||||
console.log('loaded share data',code)
|
||||
router.replace('/order');
|
||||
}
|
||||
else {
|
||||
console.log('failed to load share data',code)
|
||||
}
|
||||
}).catch((e)=> {
|
||||
console.error(e)
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
import {getToken} from "@/blockchain/token.js";
|
||||
|
||||
let native = false // whether native browser notifications are allowed
|
||||
let notificationsAllowed = false // whether native browser notifications are allowed
|
||||
|
||||
if ('Notification' in window) {
|
||||
Notification.requestPermission()
|
||||
.then(permission => {
|
||||
console.log(`notification permission: ${permission}`);
|
||||
native = permission === 'granted'
|
||||
notificationsAllowed = permission === 'granted'
|
||||
if (!notificationsAllowed)
|
||||
console.log(`notification permission denied: ${permission}`);
|
||||
})
|
||||
.catch(error => {console.error(`notification permission error: ${error}`);});
|
||||
}
|
||||
|
||||
|
||||
export function notify(title, message=null) {
|
||||
if (native) {
|
||||
if (notificationsAllowed) {
|
||||
const options = {
|
||||
renotify: true,
|
||||
tag: title,
|
||||
|
||||
@@ -18,7 +18,6 @@ export function newBuilder( component, options = {}) {
|
||||
}
|
||||
}
|
||||
|
||||
console.log('new default order')
|
||||
// Orders hold an amount and builders
|
||||
// noinspection JSUnusedLocalSymbols
|
||||
const Order = {
|
||||
@@ -26,7 +25,6 @@ const Order = {
|
||||
amount: 0,
|
||||
builders: [],
|
||||
}
|
||||
console.log('new default order completed')
|
||||
|
||||
|
||||
// the key is order.id and the value is a function() that returns an order
|
||||
|
||||
@@ -53,7 +53,7 @@ function makeColors(isLight) {
|
||||
"on-warning": ink,
|
||||
"on-error": ink,
|
||||
}
|
||||
console.log('colors', isLight?'light':'dark', colors)
|
||||
// console.log('colors', isLight?'light':'dark', colors)
|
||||
return colors;
|
||||
}
|
||||
|
||||
|
||||
23
src/share.js
23
src/share.js
@@ -1,4 +1,3 @@
|
||||
import { compressToEncodedURIComponent, decompressFromEncodedURIComponent } from 'lz-string';
|
||||
import {useChartOrderStore} from "@/orderbuild.js";
|
||||
import {changeIntervalSecs, onChartReady, setSymbol, widget} from "@/charts/chart.js";
|
||||
import {usePrefStore, useStore} from "@/store/store.js";
|
||||
@@ -37,16 +36,31 @@ export async function getShareUrl() {
|
||||
}
|
||||
|
||||
export async function loadShareUrl(code) {
|
||||
const data = await new Promise((resolve)=>socket.emit('shared', code, resolve))
|
||||
// console.log('loading share url', code)
|
||||
const data = await new Promise((resolve, reject) => {
|
||||
// Set a timeout (e.g., 8 seconds)
|
||||
const timeout = setTimeout(() => {
|
||||
reject(new Error('Timed out waiting for response from server'));
|
||||
}, 8000);
|
||||
|
||||
socket.emit('shared', code, (response) => {
|
||||
clearTimeout(timeout);
|
||||
resolve(response);
|
||||
});
|
||||
}).catch(err => {
|
||||
// Optional: show error to user or log it
|
||||
console.error('Failed to load shared URL:', err.message);
|
||||
return null;
|
||||
});
|
||||
if (data===null) return false
|
||||
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}`;
|
||||
const symbol = lookupSymbol(ticker)
|
||||
if (symbol===null) {
|
||||
console.error('could not find symbol for ticker', ticker)
|
||||
return
|
||||
return false
|
||||
}
|
||||
s.chainId = data.chainId
|
||||
const prefs = usePrefStore()
|
||||
@@ -65,6 +79,7 @@ export async function loadShareUrl(code) {
|
||||
})
|
||||
track('shared')
|
||||
console.log('loaded orders', s.chainId, co.orders)
|
||||
return true;
|
||||
}
|
||||
|
||||
export async function takeSnapshot() {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import {io} from "socket.io-client";
|
||||
|
||||
const socketOptions = {
|
||||
transports: ["websocket"],
|
||||
transport: ['polling', 'websocket'],
|
||||
pingInterval: 25000, // PING every 25 seconds
|
||||
pingTimeout: 60000 // Timeout if no PONG in 60 seconds
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import {notifyFillEvent} from "@/notify.js";
|
||||
import {refreshOHLCSubs} from "@/blockchain/ohlcs.js";
|
||||
|
||||
socket.on('connect', () => {
|
||||
console.log(new Date(), 'ws connected')
|
||||
console.log('ws connected')
|
||||
const s = useStore();
|
||||
s.connected = true
|
||||
if (s.chainId && s.account)
|
||||
@@ -16,7 +16,17 @@ socket.on('connect', () => {
|
||||
})
|
||||
|
||||
socket.on('disconnect', () => {
|
||||
console.log(new Date(), 'ws disconnected')
|
||||
console.log('ws disconnected')
|
||||
useStore().connected = false
|
||||
})
|
||||
|
||||
socket.on('connect_error', (err) => {
|
||||
console.log('ws connect error', err)
|
||||
useStore().connected = false
|
||||
})
|
||||
|
||||
socket.on('error', (err) => {
|
||||
console.log('ws error', err)
|
||||
useStore().connected = false
|
||||
})
|
||||
|
||||
@@ -151,3 +161,5 @@ socket.on( 'of', (chainId, vault, orderIndex, filled)=>{
|
||||
|
||||
console.log('apply fills completed', status)
|
||||
})
|
||||
|
||||
console.log('initialized socketio')
|
||||
@@ -1,9 +1,11 @@
|
||||
export let tracking_enabled = window.gtag !== undefined
|
||||
|
||||
if(tracking_enabled)
|
||||
console.log('gtag', tracking_enabled)
|
||||
else
|
||||
if(tracking_enabled) {
|
||||
// console.log('gtag', tracking_enabled)
|
||||
}
|
||||
else {
|
||||
console.log('tracking disabled')
|
||||
}
|
||||
|
||||
export function track(...args) {
|
||||
if (tracking_enabled) {
|
||||
|
||||
@@ -16,9 +16,9 @@ const versionPromise = fetch('/contract/version.json').then(_json('version.json'
|
||||
const metadataPromise = fetch('/metadata.json').then(_json('metadata.json'))
|
||||
|
||||
export const version = await versionPromise
|
||||
console.log('version', version)
|
||||
// console.log('version', version)
|
||||
export const metadata = await metadataPromise
|
||||
console.log('metadata', metadata)
|
||||
// console.log('metadata', metadata)
|
||||
|
||||
export function dexorderAddress(chainId) { return version['chainInfo'][chainId]['dexorder'] }
|
||||
export function factoryAddress(chainId) { return version['chainInfo'][chainId]['factory'] }
|
||||
|
||||
@@ -1633,11 +1633,6 @@ luxon@^3.4.4:
|
||||
resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.5.0.tgz#6b6f65c5cd1d61d1fd19dbf07ee87a50bf4b8e20"
|
||||
integrity sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==
|
||||
|
||||
lz-string@^1.5.0:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941"
|
||||
integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==
|
||||
|
||||
magic-string@^0.30.11, magic-string@^0.30.17:
|
||||
version "0.30.17"
|
||||
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453"
|
||||
|
||||
Reference in New Issue
Block a user