mirror of
https://github.com/hcengineering/platform.git
synced 2025-04-22 16:27:22 +00:00
Fix video widget (#6624)
Signed-off-by: Kristina Fefelova <kristin.fefelova@gmail.com>
This commit is contained in:
parent
a85d1cc0d2
commit
8cf7929712
@ -19,30 +19,36 @@
|
|||||||
import {
|
import {
|
||||||
Floor,
|
Floor,
|
||||||
Invite,
|
Invite,
|
||||||
|
isOffice,
|
||||||
JoinRequest,
|
JoinRequest,
|
||||||
|
loveId,
|
||||||
Office,
|
Office,
|
||||||
ParticipantInfo,
|
ParticipantInfo,
|
||||||
RequestStatus,
|
RequestStatus,
|
||||||
Room,
|
Room,
|
||||||
RoomType,
|
RoomType
|
||||||
isOffice,
|
|
||||||
loveId
|
|
||||||
} from '@hcengineering/love'
|
} from '@hcengineering/love'
|
||||||
import { getEmbeddedLabel } from '@hcengineering/platform'
|
import { getEmbeddedLabel } from '@hcengineering/platform'
|
||||||
import { MessageBox, createQuery, getClient } from '@hcengineering/presentation'
|
import { createQuery, getClient, MessageBox } from '@hcengineering/presentation'
|
||||||
import {
|
import {
|
||||||
Location,
|
|
||||||
PopupResult,
|
|
||||||
closePopup,
|
closePopup,
|
||||||
eventToHTMLElement,
|
eventToHTMLElement,
|
||||||
|
Location,
|
||||||
location,
|
location,
|
||||||
|
PopupResult,
|
||||||
showPopup,
|
showPopup,
|
||||||
tooltip
|
tooltip
|
||||||
} from '@hcengineering/ui'
|
} from '@hcengineering/ui'
|
||||||
import view from '@hcengineering/view'
|
import view from '@hcengineering/view'
|
||||||
import { onDestroy } from 'svelte'
|
import { onDestroy } from 'svelte'
|
||||||
import workbench from '@hcengineering/workbench'
|
import workbench from '@hcengineering/workbench'
|
||||||
import { closeWidget, openWidget, sidebarStore } from '@hcengineering/workbench-resources'
|
import {
|
||||||
|
closeWidget,
|
||||||
|
minimizeSidebar,
|
||||||
|
openWidget,
|
||||||
|
sidebarStore,
|
||||||
|
SidebarVariant
|
||||||
|
} from '@hcengineering/workbench-resources'
|
||||||
|
|
||||||
import love from '../plugin'
|
import love from '../plugin'
|
||||||
import {
|
import {
|
||||||
@ -283,8 +289,20 @@
|
|||||||
showPopup(CamSettingPopup, {}, eventToHTMLElement(e))
|
showPopup(CamSettingPopup, {}, eventToHTMLElement(e))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$: isVideoWidgetOpened = $sidebarStore.widgetsState.has(love.ids.VideoWidget)
|
||||||
|
|
||||||
|
$: if (
|
||||||
|
isVideoWidgetOpened &&
|
||||||
|
$sidebarStore.widget === undefined &&
|
||||||
|
$location.path[2] !== loveId &&
|
||||||
|
$sidebarStore.widgetsState.get(love.ids.VideoWidget)?.closedByUser !== true
|
||||||
|
) {
|
||||||
|
sidebarStore.update((s) => ({ ...s, widget: love.ids.VideoWidget, variant: SidebarVariant.EXPANDED }))
|
||||||
|
}
|
||||||
|
|
||||||
function checkActiveVideo (loc: Location, video: boolean, room: Ref<Room> | undefined): void {
|
function checkActiveVideo (loc: Location, video: boolean, room: Ref<Room> | undefined): void {
|
||||||
const isOpened = $sidebarStore.widgetsState.get(love.ids.VideoWidget)
|
const isOpened = $sidebarStore.widgetsState.has(love.ids.VideoWidget)
|
||||||
|
|
||||||
if (room === undefined) {
|
if (room === undefined) {
|
||||||
if (isOpened) {
|
if (isOpened) {
|
||||||
closeWidget(love.ids.VideoWidget)
|
closeWidget(love.ids.VideoWidget)
|
||||||
@ -292,13 +310,22 @@
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (loc.path[2] !== loveId && video) {
|
if (video) {
|
||||||
if (isOpened) return
|
if (!isOpened) {
|
||||||
const widget = client.getModel().findAllSync(workbench.class.Widget, { _id: love.ids.VideoWidget })[0]
|
const widget = client.getModel().findAllSync(workbench.class.Widget, { _id: love.ids.VideoWidget })[0]
|
||||||
if (widget === undefined) return
|
if (widget === undefined) return
|
||||||
openWidget(widget, {
|
openWidget(
|
||||||
|
widget,
|
||||||
|
{
|
||||||
room
|
room
|
||||||
})
|
},
|
||||||
|
loc.path[2] !== loveId
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (loc.path[2] === loveId && $sidebarStore.widget === love.ids.VideoWidget) {
|
||||||
|
minimizeSidebar()
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
closeWidget(love.ids.VideoWidget)
|
closeWidget(love.ids.VideoWidget)
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,7 @@
|
|||||||
</Scroller>
|
</Scroller>
|
||||||
{/if}
|
{/if}
|
||||||
{#if $floors.length > 1}
|
{#if $floors.length > 1}
|
||||||
<div class="flex-row-center flex-reverse flex-no-shrink w-full mt-4">
|
<div class="flex-row-center flex-reverse flex-no-shrink w-full mt-4 mr-2">
|
||||||
<ModernButton on:click={changeMode} icon={IconLayers} label={love.string.ChangeFloor} />
|
<ModernButton on:click={changeMode} icon={IconLayers} label={love.string.ChangeFloor} />
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
@ -92,7 +92,6 @@
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding-right: 0.5rem;
|
|
||||||
padding-bottom: 1rem;
|
padding-bottom: 1rem;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -379,7 +379,7 @@
|
|||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.error {
|
.error {
|
||||||
font-size: 500;
|
font-weight: 500;
|
||||||
font-size: 1.5rem;
|
font-size: 1.5rem;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
@ -18,8 +18,8 @@
|
|||||||
|
|
||||||
import workbench from '../../plugin'
|
import workbench from '../../plugin'
|
||||||
import { sidebarStore, SidebarVariant } from '../../sidebar'
|
import { sidebarStore, SidebarVariant } from '../../sidebar'
|
||||||
import WidgetsBarMini from './SidebarMini.svelte'
|
import SidebarMini from './SidebarMini.svelte'
|
||||||
import WidgetsBarExpanded from './SidebarExpanded.svelte'
|
import SidebarExpanded from './SidebarExpanded.svelte'
|
||||||
|
|
||||||
const client = getClient()
|
const client = getClient()
|
||||||
|
|
||||||
@ -38,9 +38,9 @@
|
|||||||
|
|
||||||
<div class="antiPanel-component antiComponent root size-{size}" id="sidebar">
|
<div class="antiPanel-component antiComponent root size-{size}" id="sidebar">
|
||||||
{#if $sidebarStore.variant === SidebarVariant.MINI}
|
{#if $sidebarStore.variant === SidebarVariant.MINI}
|
||||||
<WidgetsBarMini {widgets} {preferences} />
|
<SidebarMini {widgets} {preferences} />
|
||||||
{:else if $sidebarStore.variant === SidebarVariant.EXPANDED}
|
{:else if $sidebarStore.variant === SidebarVariant.EXPANDED}
|
||||||
<WidgetsBarExpanded {widgets} {preferences} />
|
<SidebarExpanded {widgets} {preferences} />
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -62,9 +62,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&.size-medium {
|
&.size-medium {
|
||||||
width: 25rem !important;
|
width: 20rem !important;
|
||||||
min-width: 25rem !important;
|
min-width: 20rem !important;
|
||||||
max-width: 25rem !important;
|
max-width: 20rem !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
import WidgetPresenter from './/WidgetPresenter.svelte'
|
import WidgetPresenter from './/WidgetPresenter.svelte'
|
||||||
import AddWidgetsPopup from './AddWidgetsPopup.svelte'
|
import AddWidgetsPopup from './AddWidgetsPopup.svelte'
|
||||||
import { openWidget, sidebarStore, SidebarVariant } from '../../../sidebar'
|
import { minimizeSidebar, openWidget, sidebarStore } from '../../../sidebar'
|
||||||
|
|
||||||
export let widgets: Widget[] = []
|
export let widgets: Widget[] = []
|
||||||
export let preferences: WidgetPreference[] = []
|
export let preferences: WidgetPreference[] = []
|
||||||
@ -31,9 +31,9 @@
|
|||||||
|
|
||||||
function handleSelectWidget (widget: Widget): void {
|
function handleSelectWidget (widget: Widget): void {
|
||||||
if (selected === widget._id) {
|
if (selected === widget._id) {
|
||||||
sidebarStore.update((state) => ({ ...state, widget: undefined, variant: SidebarVariant.MINI }))
|
minimizeSidebar(true)
|
||||||
} else {
|
} else {
|
||||||
openWidget(widget)
|
openWidget(widget, $sidebarStore.widgetsState.get(widget._id)?.data, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@ export interface WidgetState {
|
|||||||
data?: Record<string, any>
|
data?: Record<string, any>
|
||||||
tabs: WidgetTab[]
|
tabs: WidgetTab[]
|
||||||
tab?: string
|
tab?: string
|
||||||
|
closedByUser?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SidebarState {
|
export interface SidebarState {
|
||||||
@ -95,7 +96,7 @@ function setSidebarStateToLocalStorage (state: SidebarState): void {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function openWidget (widget: Widget, data?: Record<string, any>): void {
|
export function openWidget (widget: Widget, data?: Record<string, any>, active = true): void {
|
||||||
const state = get(sidebarStore)
|
const state = get(sidebarStore)
|
||||||
const { widgetsState } = state
|
const { widgetsState } = state
|
||||||
const widgetState = widgetsState.get(widget._id)
|
const widgetState = widgetsState.get(widget._id)
|
||||||
@ -106,7 +107,7 @@ export function openWidget (widget: Widget, data?: Record<string, any>): void {
|
|||||||
...state,
|
...state,
|
||||||
widgetsState,
|
widgetsState,
|
||||||
variant: SidebarVariant.EXPANDED,
|
variant: SidebarVariant.EXPANDED,
|
||||||
widget: widget._id
|
widget: active ? widget._id : state.widget
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,6 +115,10 @@ export function closeWidget (widget: Ref<Widget>): void {
|
|||||||
const state = get(sidebarStore)
|
const state = get(sidebarStore)
|
||||||
const { widgetsState } = state
|
const { widgetsState } = state
|
||||||
|
|
||||||
|
if (!widgetsState.has(widget) && state.widget !== widget && state.variant === SidebarVariant.MINI) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
widgetsState.delete(widget)
|
widgetsState.delete(widget)
|
||||||
|
|
||||||
if (state.widget === widget) {
|
if (state.widget === widget) {
|
||||||
@ -292,3 +297,15 @@ export function isElementFromSidebar (element: HTMLElement): boolean {
|
|||||||
|
|
||||||
return isDescendant(sidebarElement, element)
|
return isDescendant(sidebarElement, element)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function minimizeSidebar (closedByUser = false): void {
|
||||||
|
const state = get(sidebarStore)
|
||||||
|
const { widget, widgetsState } = state
|
||||||
|
const widgetState = widget == null ? undefined : widgetsState.get(widget)
|
||||||
|
|
||||||
|
if (widget !== undefined && widgetState !== undefined && closedByUser) {
|
||||||
|
widgetsState.set(widget, { ...widgetState, closedByUser })
|
||||||
|
}
|
||||||
|
|
||||||
|
sidebarStore.set({ ...state, ...widgetsState, widget: undefined, variant: SidebarVariant.MINI })
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user