90 lines
2.6 KiB
JavaScript
90 lines
2.6 KiB
JavaScript
async function directMessages(path) {
|
|
const template = await loadTemplateAsync(path)
|
|
Vue.component('direct-messages', {
|
|
name: 'direct-messages',
|
|
props: ['adminkey', 'inkey'],
|
|
template,
|
|
|
|
data: function () {
|
|
return {
|
|
customersPublicKeys: [],
|
|
activePublicKey: '',
|
|
messages: [],
|
|
newMessage: ''
|
|
}
|
|
},
|
|
methods: {
|
|
sendMessage: async function () {},
|
|
getDirectMessages: async function (pubkey) {
|
|
if (!pubkey) {
|
|
this.messages = []
|
|
return
|
|
}
|
|
try {
|
|
const {data} = await LNbits.api.request(
|
|
'GET',
|
|
'/nostrmarket/api/v1/message/' + pubkey,
|
|
this.inkey
|
|
)
|
|
this.messages = data
|
|
console.log(
|
|
'### this.messages',
|
|
this.messages.map(m => m.message)
|
|
)
|
|
this.focusOnChatBox(this.messages.length - 1)
|
|
} catch (error) {
|
|
LNbits.utils.notifyApiError(error)
|
|
}
|
|
},
|
|
getCustomersPublicKeys: async function () {
|
|
try {
|
|
const {data} = await LNbits.api.request(
|
|
'GET',
|
|
'/nostrmarket/api/v1/customers',
|
|
this.inkey
|
|
)
|
|
this.customersPublicKeys = data
|
|
console.log('### this.customersPublicKeys', this.customersPublicKeys)
|
|
} catch (error) {
|
|
LNbits.utils.notifyApiError(error)
|
|
}
|
|
},
|
|
sendDirectMesage: async function () {
|
|
try {
|
|
const {data} = await LNbits.api.request(
|
|
'POST',
|
|
'/nostrmarket/api/v1/message',
|
|
this.adminkey,
|
|
{
|
|
message: this.newMessage,
|
|
public_key: this.activePublicKey
|
|
}
|
|
)
|
|
this.messages = this.messages.concat([data])
|
|
console.log('### this.messages', this.messages)
|
|
this.newMessage = ''
|
|
this.focusOnChatBox(this.messages.length - 1)
|
|
} catch (error) {
|
|
LNbits.utils.notifyApiError(error)
|
|
}
|
|
},
|
|
selectActiveCustomer: async function () {
|
|
console.log('### selectActiveCustomer', this.activePublicKey)
|
|
await this.getDirectMessages(this.activePublicKey)
|
|
},
|
|
focusOnChatBox: function (index) {
|
|
setTimeout(() => {
|
|
const lastChatBox = document.getElementsByClassName(
|
|
`chat-mesage-index-${index}`
|
|
)
|
|
if (lastChatBox && lastChatBox[0]) {
|
|
lastChatBox[0].scrollIntoView()
|
|
}
|
|
}, 100)
|
|
}
|
|
},
|
|
created: async function () {
|
|
await this.getCustomersPublicKeys()
|
|
}
|
|
})
|
|
}
|