livechat-specific Converse plugin: refactoring
This commit is contained in:
55
conversejs/lib/plugins/livechat-specific/utils.ts
Normal file
55
conversejs/lib/plugins/livechat-specific/utils.ts
Normal file
@ -0,0 +1,55 @@
|
||||
// SPDX-FileCopyrightText: 2024 John Livingston <https://www.john-livingston.fr/>
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
// FIXME: this function is copied from @converse. Should not do so.
|
||||
export function getOpenPromise (): any {
|
||||
const wrapper: any = {
|
||||
isResolved: false,
|
||||
isPending: true,
|
||||
isRejected: false
|
||||
}
|
||||
const promise: any = new Promise((resolve, reject) => {
|
||||
wrapper.resolve = resolve
|
||||
wrapper.reject = reject
|
||||
})
|
||||
Object.assign(promise, wrapper)
|
||||
promise.then(
|
||||
function (v: any) {
|
||||
promise.isResolved = true
|
||||
promise.isPending = false
|
||||
promise.isRejected = false
|
||||
return v
|
||||
},
|
||||
function (e: any) {
|
||||
promise.isResolved = false
|
||||
promise.isPending = false
|
||||
promise.isRejected = true
|
||||
throw (e)
|
||||
}
|
||||
)
|
||||
return promise
|
||||
}
|
||||
|
||||
export async function destroyMUC (_converse: any, model: any): Promise<void> {
|
||||
const __ = _converse.__
|
||||
const messages = [__('Are you sure you want to destroy this groupchat?')]
|
||||
// Note: challenge and newjid make no sens for peertube-plugin-livechat,
|
||||
// we remove them comparing to the original function.
|
||||
let fields = [
|
||||
{
|
||||
name: 'reason',
|
||||
label: __('Optional reason for destroying this groupchat'),
|
||||
placeholder: __('Reason'),
|
||||
value: undefined
|
||||
}
|
||||
]
|
||||
try {
|
||||
fields = await _converse.api.confirm(__('Confirm'), messages, fields)
|
||||
const reason = fields.filter(f => f.name === 'reason').pop()?.value
|
||||
const newjid = undefined
|
||||
return model.sendDestroyIQ(reason, newjid).then(() => model.close())
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user