fix: reference parameters and add test cases (#8740)

Upstreams: https://github.com/toeverything/blocksuite/pull/8689
Closes: AF-1650
This commit is contained in:
fundon
2024-11-12 09:23:57 +00:00
parent 68573aa35e
commit a5bcfb0b14
8 changed files with 376 additions and 44 deletions

View File

@@ -119,34 +119,25 @@ function resolvePeekInfoFromPeekTarget(
if (element instanceof AffineReference) {
const referenceInfo = element.referenceInfo;
if (referenceInfo) {
const { pageId: docId } = referenceInfo;
const { pageId: docId, params } = referenceInfo;
const info: DocPeekViewInfo = {
type: 'doc',
docRef: {
docId,
},
docRef: { docId, ...params },
};
Object.assign(info, referenceInfo.params);
return info;
}
} else if ('model' in element) {
const blockModel = element.model;
if (isEmbedLinkedDocModel(blockModel)) {
if (
isEmbedLinkedDocModel(blockModel) ||
isEmbedSyncedDocModel(blockModel)
) {
const { pageId: docId, params } = blockModel;
const info: DocPeekViewInfo = {
type: 'doc',
docRef: {
docId: blockModel.pageId,
},
docRef: { docId, ...params },
};
Object.assign(info, blockModel.params);
return info;
} else if (isEmbedSyncedDocModel(blockModel)) {
return {
type: 'doc',
docRef: {
docId: blockModel.pageId,
},
};
} else if (isSurfaceRefModel(blockModel)) {
const refModel = (element as SurfaceRefBlockComponent).referenceModel;
// refModel can be null if the reference is invalid