From d9d5391c851562f8170c390d36543cb8fa35155a Mon Sep 17 00:00:00 2001 From: Univer <68851825+DR-Univer@users.noreply.github.com> Date: Tue, 25 Aug 2026 02:59:43 +0800 Subject: [PATCH] fix(ui): support reliable base attachment previews (#7592) --- .../gallery/__tests__/desktop-gallery.service.spec.ts | 11 +++++++++++ .../src/services/gallery/desktop-gallery.service.ts | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/ui/src/services/gallery/__tests__/desktop-gallery.service.spec.ts b/packages/ui/src/services/gallery/__tests__/desktop-gallery.service.spec.ts index 9374000638..747e33ad5e 100644 --- a/packages/ui/src/services/gallery/__tests__/desktop-gallery.service.spec.ts +++ b/packages/ui/src/services/gallery/__tests__/desktop-gallery.service.spec.ts @@ -44,6 +44,17 @@ describe('DesktopGalleryService', () => { sub.unsubscribe(); }); + it('replays the open state when the global gallery UI subscribes after the first open', () => { + const service = createService(); + service.open({ images: ['a.png'] }); + const snapshots: IGalleryProps[] = []; + + const sub = service.gallery$.subscribe((value) => snapshots.push(value)); + + expect(snapshots).toEqual([{ open: true, images: ['a.png'] }]); + sub.unsubscribe(); + }); + it('completes gallery state when the open handle is disposed', () => { const service = createService(); let completed = false; diff --git a/packages/ui/src/services/gallery/desktop-gallery.service.ts b/packages/ui/src/services/gallery/desktop-gallery.service.ts index 3fa2510a21..c9e3482df3 100644 --- a/packages/ui/src/services/gallery/desktop-gallery.service.ts +++ b/packages/ui/src/services/gallery/desktop-gallery.service.ts @@ -18,7 +18,7 @@ import type { IDisposable } from '@univerjs/core'; import type { IGalleryProps } from '@univerjs/design'; import type { IGalleryService } from './gallery.service'; import { Disposable, Inject, Injector, toDisposable } from '@univerjs/core'; -import { Subject } from 'rxjs'; +import { ReplaySubject } from 'rxjs'; import { connectInjector } from '../../utils/di'; import { GalleryPart } from '../../views/components/gallery-part/GalleryPart'; import { BuiltInUIPart, IUIPartsService } from '../parts/parts.service'; @@ -33,7 +33,7 @@ export class DesktopGalleryService extends Disposable implements IGalleryService this._initUIPart(); } - gallery$ = new Subject(); + gallery$ = new ReplaySubject(1); override dispose(): void { super.dispose();