mirror of
https://github.com/koel/koel
synced 2024-12-25 20:13:06 +00:00
46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
import select from 'select'
|
|
import { eventBus, noop } from '@/utils'
|
|
import defaultCover from '@/../img/covers/default.svg'
|
|
|
|
export { defaultCover }
|
|
|
|
/**
|
|
* Force reloading window regardless of "Confirm before reload" setting.
|
|
* This is handy for certain cases, for example Last.fm connect/disconnect.
|
|
*/
|
|
export const forceReloadWindow = (): void => {
|
|
if (process.env.NODE_ENV === 'test') {
|
|
return
|
|
}
|
|
|
|
window.onbeforeunload = noop
|
|
window.location.reload()
|
|
}
|
|
|
|
export const showOverlay = (
|
|
message = 'Just a little patience…',
|
|
type: OverlayState['type'] = 'loading',
|
|
dismissible = false
|
|
) => eventBus.emit('SHOW_OVERLAY', { message, type, dismissible })
|
|
|
|
export const hideOverlay = () => eventBus.emit('HIDE_OVERLAY')
|
|
|
|
export const copyText = (text: string): void => {
|
|
let copyArea = document.querySelector<HTMLTextAreaElement>('#copyArea')
|
|
|
|
if (!copyArea) {
|
|
copyArea = document.createElement('textarea')
|
|
copyArea.id = 'copyArea'
|
|
document.body.appendChild(copyArea)
|
|
}
|
|
|
|
copyArea.style.top = `${window.scrollY || document.documentElement.scrollTop}px`
|
|
copyArea.value = text
|
|
select(copyArea)
|
|
document.execCommand('copy')
|
|
}
|
|
|
|
export const isDemo = () => {
|
|
// can't use one-liner as it would break production build with an "Unexpected token" error
|
|
return import.meta.env.VITE_KOEL_ENV === 'demo'
|
|
}
|