mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-15 09:06:19 +08:00
feat: bump more deps (#14079)
This commit is contained in:
@@ -3,26 +3,22 @@
|
||||
## How Cross-Tab Audio Synchronization Works
|
||||
|
||||
1. **Global State**:
|
||||
|
||||
- Shared between all tabs via Electron's global state or browser storage
|
||||
- Contains `PlaybackState` and `MediaStats` objects
|
||||
- Each state update includes a timestamp (`updateTime`) to track recency
|
||||
|
||||
2. **Tab 1 - Playing Audio**:
|
||||
|
||||
- User initiates playback in Tab 1
|
||||
- `AudioMediaManagerService` updates global state with new playback info
|
||||
- Global state includes the tab ID that initiated playback
|
||||
|
||||
3. **Tab 2 - Responding to Changes**:
|
||||
|
||||
- Observes changes to global state via `observeGlobalPlaybackState`
|
||||
- Detects that audio is playing in another tab (different tabId)
|
||||
- Automatically stops any playing audio in Tab 2
|
||||
- Does not attempt to play the audio from Tab 1
|
||||
|
||||
4. **State Synchronization**:
|
||||
|
||||
- All state changes include `updateTime` to prevent race conditions
|
||||
- `distinctUntilChanged` ensures only meaningful state changes trigger updates
|
||||
- `skipUpdate` parameter prevents circular update loops
|
||||
|
||||
@@ -117,8 +117,7 @@ export const TemplateListMenuContentScrollable = (
|
||||
};
|
||||
|
||||
interface TemplateListMenuProps
|
||||
extends TemplateListMenuContentProps,
|
||||
Omit<MenuProps, 'items'> {}
|
||||
extends TemplateListMenuContentProps, Omit<MenuProps, 'items'> {}
|
||||
export const TemplateListMenu = ({
|
||||
children,
|
||||
onSelect,
|
||||
|
||||
@@ -8,8 +8,7 @@ import { forwardRef, memo, useCallback, useMemo, useState } from 'react';
|
||||
import type { View } from '../../entities/view';
|
||||
import * as styles from './indicator.css';
|
||||
|
||||
export interface SplitViewDragHandleProps
|
||||
extends HTMLAttributes<HTMLDivElement> {
|
||||
export interface SplitViewDragHandleProps extends HTMLAttributes<HTMLDivElement> {
|
||||
active?: boolean;
|
||||
dragging?: boolean;
|
||||
open?: boolean;
|
||||
|
||||
@@ -32,8 +32,9 @@ import {
|
||||
} from './state';
|
||||
import { allowedSplitViewEntityTypes } from './types';
|
||||
|
||||
export interface SplitViewPanelProps
|
||||
extends PropsWithChildren<HTMLAttributes<HTMLDivElement>> {
|
||||
export interface SplitViewPanelProps extends PropsWithChildren<
|
||||
HTMLAttributes<HTMLDivElement>
|
||||
> {
|
||||
view: View;
|
||||
index: number;
|
||||
resizeHandle?: React.ReactNode;
|
||||
|
||||
Reference in New Issue
Block a user