peertube-plugin-livechat/conversejs/custom/plugins/tasks/index.js

52 lines
2.1 KiB
JavaScript
Raw Normal View History

import { _converse, converse } from '../../../src/headless/core.js'
import { ChatRoomTaskLists } from './task-lists.js'
import { ChatRoomTaskList } from './task-list.js'
2024-04-30 16:30:44 +00:00
import { ChatRoomTasks } from './tasks.js'
2024-04-30 15:11:10 +00:00
import { getHeadingButtons, initOrDestroyChatRoomTaskLists } from './utils.js'
2024-05-10 09:33:41 +00:00
import { XMLNS_TASK, XMLNS_TASKLIST } from './constants.js'
import './components/muc-task-view.js' // FIXME: here or in another file?
import './components/muc-task-list-view.js' // FIXME: here or in another file?
import './components/muc-task-lists-view.js' // FIXME: here or in another file?
import './components/muc-task-app-view.js' // FIXME: here or in another file?
converse.plugins.add('livechat-converse-tasks', {
dependencies: ['converse-muc', 'converse-disco', 'converse-pubsub'],
initialize () {
_converse.ChatRoomTaskLists = ChatRoomTaskLists
_converse.ChatRoomTaskList = ChatRoomTaskList
2024-04-30 16:30:44 +00:00
_converse.ChatRoomTasks = ChatRoomTasks
_converse.api.settings.extend({
livechat_task_list_enabled: false
})
2024-04-30 15:11:10 +00:00
_converse.api.listen.on('chatRoomInitialized', muc => {
muc.session.on('change:connection_status', _session => {
// When joining a room, initializing the TaskLists object (if user has access),
// When disconnected from a room, destroying the Tasklists object:
initOrDestroyChatRoomTaskLists(muc)
})
2024-05-10 09:33:41 +00:00
// When the current user affiliation changes, we must also delete or initialize the TaskLists object:
muc.occupants.on('change:affiliation', occupant => {
2024-04-30 15:11:10 +00:00
if (occupant.get('jid') !== _converse.bare_jid) { // only for myself
return
}
initOrDestroyChatRoomTaskLists(muc)
})
2024-05-10 09:33:41 +00:00
// To be sure that everything works in any case, we also must listen for addition in muc.features.
muc.features.on('change:' + XMLNS_TASK, () => {
initOrDestroyChatRoomTaskLists(muc)
})
muc.features.on('change:' + XMLNS_TASKLIST, () => {
initOrDestroyChatRoomTaskLists(muc)
})
2024-04-30 15:11:10 +00:00
})
2024-04-30 07:21:18 +00:00
// adding the "Tasks" button in the MUC heading buttons:
_converse.api.listen.on('getHeadingButtons', getHeadingButtons)
}
})