New fullscreen chat WIP:
* Fullscreen chat: now uses a custom page (in other words: when opening the chat in a new tab, you will have the Peertube menu). WIP * some code refactoring (getBaseRoute moved to util/uri, ...)
This commit is contained in:
58
client/utils/conversejs.ts
Normal file
58
client/utils/conversejs.ts
Normal file
@ -0,0 +1,58 @@
|
||||
import type { InitConverseJSParams } from 'shared/lib/types'
|
||||
|
||||
// declare global {
|
||||
// interface Window {
|
||||
// converse?: {
|
||||
// initialize: (args: any) => void
|
||||
// plugins: {
|
||||
// add: (name: string, plugin: any) => void
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
converse?: any
|
||||
initConverse: Function
|
||||
}
|
||||
}
|
||||
|
||||
async function loadCSS (url: string): Promise<void> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const css = document.createElement('link')
|
||||
css.onerror = () => reject(new URIError(`CSS ${url} didn't load correctly.`))
|
||||
css.onload = () => resolve()
|
||||
css.setAttribute('type', 'text/css')
|
||||
css.setAttribute('rel', 'stylesheet')
|
||||
css.setAttribute('href', url)
|
||||
document.head.appendChild(css)
|
||||
})
|
||||
}
|
||||
|
||||
async function loadScript (url: string): Promise<void> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const script = document.createElement('script')
|
||||
script.onerror = () => reject(new URIError(`Script ${url} didn't load correctly.`))
|
||||
script.onload = () => resolve()
|
||||
script.async = true
|
||||
script.src = url
|
||||
document.head.appendChild(script)
|
||||
})
|
||||
}
|
||||
|
||||
async function loadConverseJS (converseJSParams: InitConverseJSParams): Promise<void> {
|
||||
if (!window.converse) {
|
||||
await Promise.all([
|
||||
loadCSS(converseJSParams.staticBaseUrl + 'conversejs/converse.min.css'),
|
||||
loadScript(converseJSParams.staticBaseUrl + 'conversejs/converse.min.js')
|
||||
])
|
||||
}
|
||||
if (!window.initConverse) {
|
||||
await loadScript(converseJSParams.staticBaseUrl + 'static/builtin.js')
|
||||
}
|
||||
}
|
||||
|
||||
export {
|
||||
loadConverseJS
|
||||
}
|
18
client/utils/uri.ts
Normal file
18
client/utils/uri.ts
Normal file
@ -0,0 +1,18 @@
|
||||
import type { RegisterClientOptions } from '@peertube/peertube-types/client'
|
||||
|
||||
function getBaseRoute ({ peertubeHelpers }: RegisterClientOptions, permanent: boolean = false): string {
|
||||
if (permanent) {
|
||||
return '/plugins/livechat/router'
|
||||
}
|
||||
// NB: this will come with Peertube > 3.2.1 (3.3.0?)
|
||||
if (peertubeHelpers.getBaseRouterRoute) {
|
||||
return peertubeHelpers.getBaseRouterRoute()
|
||||
}
|
||||
// We are guessing the route with the correct plugin version with this trick:
|
||||
const staticBase = peertubeHelpers.getBaseStaticRoute()
|
||||
return staticBase.replace(/\/static.*$/, '/router')
|
||||
}
|
||||
|
||||
export {
|
||||
getBaseRoute
|
||||
}
|
Reference in New Issue
Block a user