feat: improve DMs for structured messages
This commit is contained in:
parent
2b84ebc83b
commit
13b19b672e
2 changed files with 60 additions and 71 deletions
|
|
@ -6,19 +6,11 @@
|
||||||
<h6 class="text-subtitle1 q-my-none">Messages</h6>
|
<h6 class="text-subtitle1 q-my-none">Messages</h6>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-4">
|
<div class="col-4">
|
||||||
<q-badge v-if="unreadMessages" color="green"
|
<q-badge v-if="unreadMessages" color="green"><span v-text="unreadMessages"></span> new</q-badge>
|
||||||
><span v-text="unreadMessages"></span> new</q-badge
|
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
<q-btn
|
<q-btn v-if="activePublicKey" @click="showClientOrders" unelevated outline class="float-right">Client
|
||||||
v-if="activePublicKey"
|
Orders</q-btn>
|
||||||
@click="showClientOrders"
|
|
||||||
unelevated
|
|
||||||
outline
|
|
||||||
class="float-right"
|
|
||||||
>Client Orders</q-btn
|
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
|
|
@ -28,26 +20,17 @@
|
||||||
<q-card-section>
|
<q-card-section>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-10">
|
<div class="col-10">
|
||||||
<q-select
|
<q-select v-model="activePublicKey"
|
||||||
v-model="activePublicKey"
|
:options="customers.map(c => ({label: buildCustomerLabel(c), value: c.public_key}))" label="Select Customer"
|
||||||
:options="customers.map(c => ({label: buildCustomerLabel(c), value: c.public_key}))"
|
emit-value @input="selectActiveCustomer()">
|
||||||
label="Select Customer"
|
</q-select>
|
||||||
emit-value
|
|
||||||
@input="selectActiveCustomer()"
|
|
||||||
>
|
|
||||||
</q-select>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-2">
|
<div class="col-2">
|
||||||
<q-btn
|
<q-btn label="Add" color="green" class="float-right q-mt-md" @click="showAddPublicKey = true">
|
||||||
label="Add"
|
<q-tooltip>
|
||||||
color="green"
|
Add a public key to chat with
|
||||||
class="float-right q-mt-md"
|
</q-tooltip>
|
||||||
@click="showAddPublicKey = true"
|
</q-btn>
|
||||||
>
|
|
||||||
<q-tooltip>
|
|
||||||
Add a public key to chat with
|
|
||||||
</q-tooltip>
|
|
||||||
</q-btn>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -56,36 +39,36 @@
|
||||||
<div class="chat-container" ref="chatCard">
|
<div class="chat-container" ref="chatCard">
|
||||||
<div class="chat-box">
|
<div class="chat-box">
|
||||||
<div class="chat-messages" style="height: 45vh">
|
<div class="chat-messages" style="height: 45vh">
|
||||||
<q-chat-message
|
<q-chat-message v-for="(dm, index) in messagesAsJson" :key="index" :name="dm.incoming ? 'customer': 'me'"
|
||||||
v-for="(dm, index) in messages"
|
:text="dm.isJson ? [] : [dm.message]" :sent="!dm.incoming"
|
||||||
:key="index"
|
:bg-color="dm.incoming ? 'white' : 'light-green-2'" :class="'chat-mesage-index-'+index">
|
||||||
:name="dm.incoming ? 'customer': 'me'"
|
<div v-if="dm.isJson">
|
||||||
:text="[dm.message]"
|
<div v-if="dm.message.type === 0">
|
||||||
:sent="!dm.incoming"
|
<strong>New order:</strong>
|
||||||
:bg-color="dm.incoming ? 'white' : 'light-green-2'"
|
<span v-text="dm.message.id"></span>
|
||||||
:class="'chat-mesage-index-'+index"
|
</div>
|
||||||
/>
|
<div v-else-if="dm.message.type === 1">
|
||||||
|
<strong>Invoice sent for order: </strong>
|
||||||
|
<span v-text="dm.message.id"></span>
|
||||||
|
</div>
|
||||||
|
<div v-else-if="dm.message.type === 2">
|
||||||
|
<q-badge v-if="dm.message.paid" color="green">Paid </q-badge>
|
||||||
|
<q-badge v-if="dm.message.shipped" color="green">Shipped </q-badge>
|
||||||
|
<span v-text="dm.message.message"></span><br>
|
||||||
|
<span v-text="dm.message.id"></span>
|
||||||
|
</div>
|
||||||
|
<div v-else>
|
||||||
|
<span v-text="JSON.stringify(dm.message)"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</q-chat-message>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<q-card-section>
|
<q-card-section>
|
||||||
<q-form @submit="sendDirectMesage" class="full-width chat-input">
|
<q-form @submit="sendDirectMesage" class="full-width chat-input">
|
||||||
<q-input
|
<q-input ref="newMessage" v-model="newMessage" placeholder="Message" class="full-width" dense outlined>
|
||||||
ref="newMessage"
|
|
||||||
v-model="newMessage"
|
|
||||||
placeholder="Message"
|
|
||||||
class="full-width"
|
|
||||||
dense
|
|
||||||
outlined
|
|
||||||
>
|
|
||||||
<template>
|
<template>
|
||||||
<q-btn
|
<q-btn round dense flat type="submit" icon="send" color="primary" />
|
||||||
round
|
|
||||||
dense
|
|
||||||
flat
|
|
||||||
type="submit"
|
|
||||||
icon="send"
|
|
||||||
color="primary"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
</q-input>
|
</q-input>
|
||||||
</q-form>
|
</q-form>
|
||||||
|
|
@ -97,26 +80,13 @@
|
||||||
<q-dialog v-model="showAddPublicKey" position="top">
|
<q-dialog v-model="showAddPublicKey" position="top">
|
||||||
<q-card class="q-pa-lg q-pt-xl" style="width: 500px">
|
<q-card class="q-pa-lg q-pt-xl" style="width: 500px">
|
||||||
<q-form @submit="addPublicKey" class="q-gutter-md">
|
<q-form @submit="addPublicKey" class="q-gutter-md">
|
||||||
<q-input
|
<q-input filled dense v-model.trim="newPublicKey" label="Public Key (hex or nsec)"></q-input>
|
||||||
filled
|
|
||||||
dense
|
|
||||||
v-model.trim="newPublicKey"
|
|
||||||
label="Public Key (hex or nsec)"
|
|
||||||
></q-input>
|
|
||||||
<div class="row q-mt-lg">
|
<div class="row q-mt-lg">
|
||||||
<q-btn
|
<q-btn unelevated color="primary" :disable="!newPublicKey" type="submit">Add</q-btn>
|
||||||
unelevated
|
<q-btn v-close-popup flat color="grey" class="q-ml-auto">Cancel</q-btn>
|
||||||
color="primary"
|
|
||||||
:disable="!newPublicKey"
|
|
||||||
type="submit"
|
|
||||||
>Add</q-btn
|
|
||||||
>
|
|
||||||
<q-btn v-close-popup flat color="grey" class="q-ml-auto"
|
|
||||||
>Cancel</q-btn
|
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</q-form>
|
</q-form>
|
||||||
</q-card>
|
</q-card>
|
||||||
</q-dialog>
|
</q-dialog>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -13,6 +13,25 @@ async function directMessages(path) {
|
||||||
await this.getDirectMessages(n)
|
await this.getDirectMessages(n)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
messagesAsJson: function() {
|
||||||
|
return this.messages.map(m => {
|
||||||
|
try {
|
||||||
|
return {
|
||||||
|
isJson: true,
|
||||||
|
...m,
|
||||||
|
message: JSON.parse(m.message)
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
return {
|
||||||
|
isJson: false,
|
||||||
|
...m,
|
||||||
|
message: m.message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
customers: [],
|
customers: [],
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue