Skip to content

Commit 79d8dcb

Browse files
Adam GoughAdam Gough
authored andcommitted
added isPreview to other subBlock types
1 parent 8734411 commit 79d8dcb

File tree

3 files changed

+76
-19
lines changed

3 files changed

+76
-19
lines changed

apps/sim/app/w/[id]/components/workflow-block/components/sub-block/components/channel-selector/channel-selector-input.tsx

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ interface ChannelSelectorInputProps {
1111
subBlock: SubBlockConfig
1212
disabled?: boolean
1313
onChannelSelect?: (channelId: string) => void
14-
credential?: string // Optional credential override
14+
credential?: string
15+
isPreview?: boolean
16+
previewValue?: any | null
1517
}
1618

1719
export function ChannelSelectorInput({
@@ -20,6 +22,8 @@ export function ChannelSelectorInput({
2022
disabled = false,
2123
onChannelSelect,
2224
credential: providedCredential,
25+
isPreview = false,
26+
previewValue,
2327
}: ChannelSelectorInputProps) {
2428
const { getValue, setValue } = useSubBlockStore()
2529
const [selectedChannelId, setSelectedChannelId] = useState<string>('')
@@ -42,19 +46,31 @@ export function ChannelSelectorInput({
4246
credential = (getValue(blockId, 'credential') as string) || ''
4347
}
4448

45-
// Get the current value from the store
49+
// Use preview value when in preview mode, otherwise use store value
50+
const value = isPreview ? previewValue : getValue(blockId, subBlock.id)
51+
52+
// Get the current value from the store or prop value if in preview mode
4653
useEffect(() => {
47-
const value = getValue(blockId, subBlock.id)
48-
if (value && typeof value === 'string') {
49-
setSelectedChannelId(value)
54+
if (isPreview && previewValue !== undefined) {
55+
const value = previewValue
56+
if (value && typeof value === 'string') {
57+
setSelectedChannelId(value)
58+
}
59+
} else {
60+
const value = getValue(blockId, subBlock.id)
61+
if (value && typeof value === 'string') {
62+
setSelectedChannelId(value)
63+
}
5064
}
51-
}, [blockId, subBlock.id, getValue])
65+
}, [blockId, subBlock.id, getValue, isPreview, previewValue])
5266

5367
// Handle channel selection
5468
const handleChannelChange = (channelId: string, info?: SlackChannelInfo) => {
5569
setSelectedChannelId(channelId)
5670
setChannelInfo(info || null)
57-
setValue(blockId, subBlock.id, channelId)
71+
if (!isPreview) {
72+
setValue(blockId, subBlock.id, channelId)
73+
}
5874
onChannelSelect?.(channelId)
5975
}
6076

apps/sim/app/w/[id]/components/workflow-block/components/sub-block/components/credential-selector/credential-selector.tsx

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ interface CredentialSelectorProps {
3434
label?: string
3535
disabled?: boolean
3636
serviceId?: string
37+
isPreview?: boolean
38+
previewValue?: any | null
3739
}
3840

3941
export function CredentialSelector({
@@ -44,12 +46,23 @@ export function CredentialSelector({
4446
label = 'Select credential',
4547
disabled = false,
4648
serviceId,
49+
isPreview = false,
50+
previewValue,
4751
}: CredentialSelectorProps) {
4852
const [open, setOpen] = useState(false)
4953
const [credentials, setCredentials] = useState<Credential[]>([])
5054
const [isLoading, setIsLoading] = useState(false)
5155
const [showOAuthModal, setShowOAuthModal] = useState(false)
52-
const [selectedId, setSelectedId] = useState(value)
56+
const [selectedId, setSelectedId] = useState('')
57+
58+
// Initialize selectedId with the effective value
59+
useEffect(() => {
60+
if (isPreview && previewValue !== undefined) {
61+
setSelectedId(previewValue || '')
62+
} else {
63+
setSelectedId(value)
64+
}
65+
}, [value, isPreview, previewValue])
5366

5467
// Derive service and provider IDs using useMemo
5568
const effectiveServiceId = useMemo(() => {
@@ -110,8 +123,9 @@ export function CredentialSelector({
110123

111124
// Update local state when external value changes
112125
useEffect(() => {
113-
setSelectedId(value)
114-
}, [value])
126+
const currentValue = isPreview ? previewValue : value
127+
setSelectedId(currentValue || '')
128+
}, [value, isPreview, previewValue])
115129

116130
// Listen for visibility changes to update credentials when user returns from settings
117131
useEffect(() => {
@@ -143,7 +157,9 @@ export function CredentialSelector({
143157
// Handle selection
144158
const handleSelect = (credentialId: string) => {
145159
setSelectedId(credentialId)
146-
onChange(credentialId)
160+
if (!isPreview) {
161+
onChange(credentialId)
162+
}
147163
setOpen(false)
148164
}
149165

apps/sim/app/w/[id]/components/workflow-block/components/sub-block/components/folder-selector/folder-selector.tsx

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ interface FolderSelectorProps {
3737
disabled?: boolean
3838
serviceId?: string
3939
onFolderInfoChange?: (folderInfo: FolderInfo | null) => void
40+
isPreview?: boolean
41+
previewValue?: any | null
4042
}
4143

4244
export function FolderSelector({
@@ -48,18 +50,29 @@ export function FolderSelector({
4850
disabled = false,
4951
serviceId,
5052
onFolderInfoChange,
53+
isPreview = false,
54+
previewValue,
5155
}: FolderSelectorProps) {
5256
const [open, setOpen] = useState(false)
5357
const [credentials, setCredentials] = useState<Credential[]>([])
5458
const [folders, setFolders] = useState<FolderInfo[]>([])
5559
const [selectedCredentialId, setSelectedCredentialId] = useState<string>('')
56-
const [selectedFolderId, setSelectedFolderId] = useState(value)
60+
const [selectedFolderId, setSelectedFolderId] = useState('')
5761
const [selectedFolder, setSelectedFolder] = useState<FolderInfo | null>(null)
5862
const [isLoading, setIsLoading] = useState(false)
5963
const [isLoadingSelectedFolder, setIsLoadingSelectedFolder] = useState(false)
6064
const [showOAuthModal, setShowOAuthModal] = useState(false)
6165
const initialFetchRef = useRef(false)
6266

67+
// Initialize selectedFolderId with the effective value
68+
useEffect(() => {
69+
if (isPreview && previewValue !== undefined) {
70+
setSelectedFolderId(previewValue || '')
71+
} else {
72+
setSelectedFolderId(value)
73+
}
74+
}, [value, isPreview, previewValue])
75+
6376
// Determine the appropriate service ID based on provider and scopes
6477
const getServiceId = (): string => {
6578
if (serviceId) return serviceId
@@ -226,23 +239,35 @@ export function FolderSelector({
226239

227240
// Keep internal selectedFolderId in sync with the value prop
228241
useEffect(() => {
229-
if (value !== selectedFolderId) {
230-
setSelectedFolderId(value)
242+
const currentValue = isPreview ? previewValue : value
243+
if (currentValue !== selectedFolderId) {
244+
setSelectedFolderId(currentValue || '')
231245
}
232-
}, [value])
246+
}, [value, isPreview, previewValue])
233247

234248
// Fetch the selected folder metadata once credentials are ready (Gmail only)
235249
useEffect(() => {
236-
if (value && selectedCredentialId && !selectedFolder && provider !== 'outlook') {
237-
fetchFolderById(value)
250+
const currentValue = isPreview ? previewValue : value
251+
if (currentValue && selectedCredentialId && !selectedFolder && provider !== 'outlook') {
252+
fetchFolderById(currentValue)
238253
}
239-
}, [value, selectedCredentialId, selectedFolder, fetchFolderById, provider])
254+
}, [
255+
value,
256+
selectedCredentialId,
257+
selectedFolder,
258+
fetchFolderById,
259+
provider,
260+
isPreview,
261+
previewValue,
262+
])
240263

241264
// Handle folder selection
242265
const handleSelectFolder = (folder: FolderInfo) => {
243266
setSelectedFolderId(folder.id)
244267
setSelectedFolder(folder)
245-
onChange(folder.id, folder)
268+
if (!isPreview) {
269+
onChange(folder.id, folder)
270+
}
246271
onFolderInfoChange?.(folder)
247272
setOpen(false)
248273
}

0 commit comments

Comments
 (0)