56 lines
1.6 KiB
TypeScript
56 lines
1.6 KiB
TypeScript
|
// 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)
|
||
|
}
|
||
|
}
|