Skip to content

Commit 27dceee

Browse files
Preview Dimension possible solution
1 parent f46e28a commit 27dceee

File tree

7 files changed

+34
-2
lines changed

7 files changed

+34
-2
lines changed

packages/field-plugin/src/createFieldPlugin/createPluginActions/callbackQueue.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import type {
66
LoadedMessage,
77
OnMessage,
88
StateChangedMessage,
9-
PreviewDimensionChangeMessage,
109
} from '../../messaging'
10+
import { PreviewDimensionResponse } from '../../messaging/pluginMessage/containerToPluginMessage/PreviewDimensionResponseMessage'
1111
import { getRandomUid } from '../../utils'
1212

1313
export type CallbackId = string
@@ -19,7 +19,7 @@ type CallbackMap = {
1919
stateChanged: Record<CallbackId, OnMessage<StateChangedMessage>>
2020
loaded: Record<CallbackId, OnMessage<LoadedMessage>>
2121
promptAI: Record<CallbackId, OnMessage<PromptAIResponseMessage>>
22-
previewDimension: Record<CallbackId, OnMessage<PreviewDimensionChangeMessage>>
22+
previewDimension: Record<CallbackId, OnMessage<PreviewDimensionResponse>>
2323
}
2424
type CallbackType = keyof CallbackMap
2525

packages/field-plugin/src/createFieldPlugin/createPluginActions/createPluginActions.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,12 @@ import {
2020
type OnUnknownPluginMessage,
2121
type OnPromptAIMessage,
2222
type PromptAIPayload,
23+
OnPreviewDimensionMessage,
2324
} from '../../messaging'
2425
import { FieldPluginActions, Initialize } from '../FieldPluginActions'
2526
import { pluginStateFromStateChangeMessage } from './partialPluginStateFromStateChangeMessage'
2627
import { callbackQueue } from './callbackQueue'
28+
import { PreviewDimensionResponse } from '../../messaging/pluginMessage/containerToPluginMessage/PreviewDimensionResponseMessage'
2729

2830
export type ValidateContent<Content> = (content: unknown) => {
2931
content: Content
@@ -82,6 +84,10 @@ export const createPluginActions: CreatePluginActions = ({
8284
popCallback('promptAI', data.callbackId)?.(data)
8385
}
8486

87+
const onPreviewDimension: OnPreviewDimensionMessage = (data) => {
88+
popCallback('previewDimension', data.callbackId)
89+
}
90+
8591
const onUnknownMessage: OnUnknownPluginMessage = (data) => {
8692
// TODO remove side-effect, making functions in this file pure.
8793
// perhaps only show this message in development mode?
@@ -101,6 +107,7 @@ export const createPluginActions: CreatePluginActions = ({
101107
onUserContextRequest,
102108
onAssetSelect,
103109
onPromptAI,
110+
onPreviewDimension,
104111
onUnknownMessage,
105112
}
106113

packages/field-plugin/src/createFieldPlugin/createPluginActions/createPluginMessageListener/createPluginMessageListener.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import type {
66
OnPromptAIMessage,
77
OnStateChangeMessage,
88
OnUnknownPluginMessage,
9+
OnPreviewDimensionMessage,
910
} from '../../../messaging'
1011
import { handlePluginMessage } from './handlePluginMessage'
1112

@@ -16,6 +17,7 @@ export type PluginMessageCallbacks = {
1617
onUserContextRequest: OnUserContextRequestMessage
1718
onAssetSelect: OnAssetSelectMessage
1819
onPromptAI: OnPromptAIMessage
20+
onPreviewDimension: OnPreviewDimensionMessage
1921
onUnknownMessage: OnUnknownPluginMessage
2022
}
2123

packages/field-plugin/src/createFieldPlugin/createPluginActions/createPluginMessageListener/handlePluginMessage.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
} from '../../../messaging'
99
import { PluginMessageCallbacks } from './createPluginMessageListener'
1010
import { isStateMessage } from '../../../messaging/pluginMessage/containerToPluginMessage/StateChangedMessage'
11+
import { isPreviewDimensionResponse } from '../../../messaging/pluginMessage/containerToPluginMessage//PreviewDimensionResponseMessage'
1112

1213
export const handlePluginMessage = (
1314
data: unknown,
@@ -38,6 +39,8 @@ export const handlePluginMessage = (
3839
callbacks.onAssetSelect(data)
3940
} else if (isPromptAIMessage(data)) {
4041
callbacks.onPromptAI(data)
42+
} else if (isPreviewDimensionResponse(data)) {
43+
callbacks.onPreviewDimension(data)
4144
} else {
4245
callbacks.onUnknownMessage(data)
4346
}

packages/field-plugin/src/messaging/pluginMessage/containerToPluginMessage/ContainerToPlugin.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { UserContextRequestMessage } from './UserContextRequestMessage'
55
import { MessageToPlugin } from './MessageToPlugin'
66
import { StateChangedMessage } from './StateChangedMessage'
77
import { PromptAIResponseMessage } from './PromptAIResponseMessage'
8+
import { PreviewDimensionResponse } from './PreviewDimensionResponseMessage'
89

910
/**
1011
* The plugin container's sends it's state to the plugin
@@ -14,6 +15,9 @@ export type OnStateChangeMessage = (message: StateChangedMessage) => void
1415
export type OnLoadedMessage = (message: LoadedMessage) => void
1516
export type OnAssetSelectMessage = (message: AssetSelectedMessage) => void
1617
export type OnPromptAIMessage = (message: PromptAIResponseMessage) => void
18+
export type OnPreviewDimensionMessage = (
19+
message: PreviewDimensionResponse,
20+
) => void
1721
export type OnContextRequestMessage = (message: ContextRequestMessage) => void
1822
export type OnUserContextRequestMessage = (
1923
message: UserContextRequestMessage,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { isMessageToPlugin, type MessageToPlugin } from './MessageToPlugin'
2+
3+
export type PreviewDimensionResponse = MessageToPlugin<'preview-dimension'>
4+
5+
export const isPreviewDimensionResponse = (
6+
data: unknown,
7+
): data is PreviewDimensionResponse =>
8+
isMessageToPlugin(data) && data.action === 'preview-dimension'

packages/sandbox/src/components/FieldPluginSandbox.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,14 @@ const useSandbox = (
331331
const onSetPreviewDimension = useCallback(
332332
(message: PreviewDimensionChangeMessage) => {
333333
setPreviewDimension(message.data)
334+
335+
//This would make the field plugin to clean its queue
336+
//It would also be needed to be changed in the Storyfront side.
337+
postToPlugin({
338+
uid,
339+
action: 'preview-dimension',
340+
callbackId: message.callbackId,
341+
})
334342
},
335343
[],
336344
)

0 commit comments

Comments
 (0)