put app back on app.dexorder.com and corp site on dexorder.com with www redirecting to apex
This commit is contained in:
@@ -1,2 +1,2 @@
|
||||
VITE_WS_URL=wss://ws.dexorder.com
|
||||
VITE_SHARE_URL=https://dexorder.com
|
||||
VITE_SHARE_URL=https://app.dexorder.com
|
||||
|
||||
142
src/components/FloatingDiv.vue
Normal file
142
src/components/FloatingDiv.vue
Normal file
@@ -0,0 +1,142 @@
|
||||
<template>
|
||||
<div
|
||||
ref="floatingDiv"
|
||||
:style="divStyle"
|
||||
@mousedown="startDrag"
|
||||
>
|
||||
<slot></slot>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted, onBeforeUnmount } from 'vue';
|
||||
|
||||
const props = defineProps({
|
||||
id: {
|
||||
type: String,
|
||||
required: false,
|
||||
}
|
||||
});
|
||||
|
||||
const floatingDiv = ref(null);
|
||||
const position = reactive({ x: 0, y: 0 });
|
||||
const isDragging = ref(false);
|
||||
const isFloating = ref(false);
|
||||
const dragStartOffset = reactive({ x: 0, y: 0 });
|
||||
|
||||
const divStyle = reactive({
|
||||
position: "",
|
||||
top: "",
|
||||
left: "",
|
||||
zIndex: "",
|
||||
cursor: "default",
|
||||
});
|
||||
|
||||
let activeComponent = null;
|
||||
|
||||
function positionKey() {
|
||||
return props.id ? `floating-div-pos:${props.id}` : null;
|
||||
}
|
||||
|
||||
function savePosition() {
|
||||
if (props.id) {
|
||||
localStorage.setItem(
|
||||
positionKey(),
|
||||
JSON.stringify({ x: position.x, y: position.y })
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function loadPosition() {
|
||||
if (props.id) {
|
||||
const data = localStorage.getItem(positionKey());
|
||||
if (data) {
|
||||
try {
|
||||
const { x, y } = JSON.parse(data);
|
||||
position.x = x;
|
||||
position.y = y;
|
||||
divStyle.position = "fixed";
|
||||
divStyle.top = `${position.y}px`;
|
||||
divStyle.left = `${position.x}px`;
|
||||
divStyle.zIndex = 9999;
|
||||
isFloating.value = true;
|
||||
} catch {
|
||||
// Ignore corrupted data
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const startDrag = (event) => {
|
||||
if (event.shiftKey || event.ctrlKey) {
|
||||
if (!isFloating.value) {
|
||||
const rect = floatingDiv.value.getBoundingClientRect();
|
||||
position.x = rect.left;
|
||||
position.y = rect.top;
|
||||
divStyle.position = "fixed";
|
||||
divStyle.top = `${position.y}px`;
|
||||
divStyle.left = `${position.x}px`;
|
||||
divStyle.zIndex = 9999;
|
||||
isFloating.value = true;
|
||||
}
|
||||
|
||||
isDragging.value = true;
|
||||
dragStartOffset.x = event.clientX - position.x;
|
||||
dragStartOffset.y = event.clientY - position.y;
|
||||
divStyle.cursor = "move";
|
||||
document.body.style.userSelect = "none";
|
||||
|
||||
activeComponent = floatingDiv;
|
||||
|
||||
window.addEventListener("mousemove", handleDrag);
|
||||
window.addEventListener("mouseup", stopDrag);
|
||||
}
|
||||
};
|
||||
|
||||
const handleDrag = (event) => {
|
||||
if (isDragging.value && activeComponent === floatingDiv) {
|
||||
position.x = event.clientX - dragStartOffset.x;
|
||||
position.y = event.clientY - dragStartOffset.y;
|
||||
divStyle.top = `${position.y}px`;
|
||||
divStyle.left = `${position.x}px`;
|
||||
}
|
||||
};
|
||||
|
||||
const stopDrag = () => {
|
||||
if (isDragging.value && activeComponent === floatingDiv) {
|
||||
isDragging.value = false;
|
||||
divStyle.cursor = "default";
|
||||
document.body.style.userSelect = "auto";
|
||||
activeComponent = null;
|
||||
|
||||
savePosition();
|
||||
|
||||
window.removeEventListener("mousemove", handleDrag);
|
||||
window.removeEventListener("mouseup", stopDrag);
|
||||
}
|
||||
};
|
||||
|
||||
const handleOutsideDrag = (event) => {
|
||||
if (event.key === "Shift" || event.key === "Control") {
|
||||
stopDrag();
|
||||
}
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
document.addEventListener("keyup", handleOutsideDrag);
|
||||
loadPosition();
|
||||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
document.removeEventListener("keyup", handleOutsideDrag);
|
||||
window.removeEventListener("mousemove", handleDrag);
|
||||
window.removeEventListener("mouseup", stopDrag);
|
||||
});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
div[ref="floatingDiv"] {
|
||||
background: rgba(255, 255, 255, 0.8);
|
||||
box-shadow: 0 4px 8px rgba(0,0,0,0.2);
|
||||
}
|
||||
</style>
|
||||
@@ -5,7 +5,7 @@
|
||||
<v-card-text class="text-center">Last Updated November 18, 2024</v-card-text>
|
||||
|
||||
<v-card-text>
|
||||
Please read these Terms of Service (the “<b>Terms</b>”) and our <a href="https://www.dexorder.com/privacy-policy" target="dexorder">Privacy Policy</a> carefully because they govern your
|
||||
Please read these Terms of Service (the “<b>Terms</b>”) and our <a href="https://dexorder.com/privacy-policy" target="dexorder">Privacy Policy</a> carefully because they govern your
|
||||
use of the
|
||||
website (and all subdomains and subpages thereon) located at dexorder.com, including without limitation the
|
||||
subdomains app.dexorder.com and www.dexorder.com (collectively, the “<b>Site</b>”), and the Dexorder web
|
||||
@@ -205,7 +205,7 @@
|
||||
(i) Subject to your compliance with these Terms, Dexorder will use its commercially
|
||||
reasonable efforts to provide you with access to the Dexorder Service and to cause your Interactions to be
|
||||
executed on the applicable DEX in accordance with Dexorder’s Execution Policy located at
|
||||
<a href="https://www.dexorder.com/execution-policy">https://www.dexorder.com/execution-policy</a>
|
||||
<a href="https://dexorder.com/execution-policy">https://dexorder.com/execution-policy</a>
|
||||
(“<b>Execution Policy</b>”), however from time to time the Site and the Dexorder Service may be inaccessible or
|
||||
inoperable for any
|
||||
reason, including, without limitation: (a) if an Interaction repeatedly fails to be executed (such as due to an
|
||||
|
||||
@@ -59,7 +59,7 @@ function tryIt() {
|
||||
|
||||
function learnMore() {
|
||||
track('learn-more')
|
||||
window.open('https://www.dexorder.com/introduction.html', 'dexorderwww')
|
||||
window.open('https://dexorder.com/introduction.html', 'dexorderwww')
|
||||
modelValue.value = false
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<toolbar-button tooltip="Assets" icon="mdi-currency-btc" route="Assets"/>
|
||||
<!-- mdi-format-list-checks mdi-format-list-bulleted-square -->
|
||||
<toolbar-button tooltip="Status" icon="mdi-format-list-checks" route="Status"/>
|
||||
<toolbar-button tooltip="About" icon="mdi-information-outline" href="https://www.dexorder.com/" target="dexorderwww"/>
|
||||
<toolbar-button tooltip="About" icon="mdi-information-outline" href="https://dexorder.com/" target="dexorderwww"/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
<script setup>
|
||||
function openApp() {
|
||||
window.open('https://dexorder.com/', 'dexorderapp')
|
||||
window.open('https://app.dexorder.com/', 'dexorderapp')
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ import {router} from "@/router/router.js";
|
||||
const theme = useTheme().current
|
||||
|
||||
function openApp() {
|
||||
window.open('https://dexorder.com/', 'dexorderapp')
|
||||
window.open('https://app.dexorder.com/', 'dexorderapp')
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user