Skip to content

Commit 1fb533b

Browse files
committed
use hydrate for fusion stories
1 parent 2a5bf72 commit 1fb533b

File tree

3 files changed

+44
-22
lines changed

3 files changed

+44
-22
lines changed

src/UI/StoryPreview/PreviewController/Mounters/Functional.tsx

+14-11
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,26 @@
1-
import React, { useRef } from "@rbxts/react";
2-
import { useEffect } from "@rbxts/react";
3-
import { MounterProps } from ".";
4-
import { FastSpawn, UILabsWarn, YCall } from "Utils/MiscUtils";
1+
import React, { useEffect, useRef } from "@rbxts/react";
52
import { WARNING_STORY_TYPES, WARNINGS } from "Plugin/Warnings";
3+
import { FastSpawn, UILabsWarn, YCall } from "Utils/MiscUtils";
4+
import { MounterProps } from ".";
65

76
const FUNCTIONAL_ERR = WARNING_STORY_TYPES.Functional;
87

98
function Functional(props: MounterProps<"Functional">) {
109
const unmounter = useRef<() => void>();
1110

1211
useEffect(() => {
13-
unmounter.current = YCall(props.Result, props.MountFrame, (didYield, err) => {
14-
print("ERR", err);
15-
if (didYield) {
16-
UILabsWarn(WARNINGS.Yielding.format(FUNCTIONAL_ERR));
17-
} else {
18-
UILabsWarn(WARNINGS.StoryError.format(FUNCTIONAL_ERR), err);
12+
unmounter.current = YCall(
13+
props.Result,
14+
props.MountFrame,
15+
(didYield, err) => {
16+
print("ERR", err);
17+
if (didYield) {
18+
UILabsWarn(WARNINGS.Yielding.format(FUNCTIONAL_ERR));
19+
} else {
20+
UILabsWarn(WARNINGS.StoryError.format(FUNCTIONAL_ERR), err);
21+
}
1922
}
20-
});
23+
);
2124
}, []);
2225

2326
props.UnmountSignal.Connect(() => {

src/UI/StoryPreview/PreviewController/Mounters/FusionLib/Utils.ts

+24-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import Fusion from "@rbxts/fusion";
2-
import { CreateControlStates, InferFusionControls, UpdateControlStates } from "@rbxts/ui-labs";
2+
import {
3+
CreateControlStates,
4+
InferFusionControls,
5+
UpdateControlStates
6+
} from "@rbxts/ui-labs";
37
import { ConvertedControls } from "@rbxts/ui-labs/src/ControlTypings/Typing";
48
import { Cast } from "Utils/MiscUtils";
59

@@ -15,13 +19,21 @@ export function GetFusionVersion(fusion: typeof Fusion) {
1519
}
1620
}
1721

18-
export function CreateFusionValues(fusion: typeof Fusion, controls: ConvertedControls, controlValues: ParametrizedControls) {
22+
export function CreateFusionValues(
23+
fusion: typeof Fusion,
24+
controls: ConvertedControls,
25+
controlValues: ParametrizedControls
26+
) {
1927
return CreateControlStates(controls, controlValues, (value) => {
2028
return fusion.Value(value);
2129
}) as InferFusionControls<ConvertedControls>;
2230
}
2331

24-
export function CreateFusion3Values(fusion: Fusion3, controls: ConvertedControls, controlValues: ParametrizedControls) {
32+
export function CreateFusion3Values(
33+
fusion: Fusion3,
34+
controls: ConvertedControls,
35+
controlValues: ParametrizedControls
36+
) {
2537
return CreateControlStates(controls, controlValues, (value) => {
2638
return fusion.Value(value);
2739
}) as InferFusionControls<ConvertedControls>;
@@ -30,9 +42,14 @@ export function CreateFusion3Values(fusion: Fusion3, controls: ConvertedControls
3042
export function UpdateFusionValues(
3143
values: InferFusionControls<ConvertedControls>,
3244
controls: ConvertedControls,
33-
controlValues: ParametrizedControls,
45+
controlValues: ParametrizedControls
3446
) {
35-
UpdateControlStates(values, controls, controlValues, (value: Fusion.Value<any>, update) => {
36-
return value.set(update);
37-
});
47+
UpdateControlStates(
48+
values,
49+
controls,
50+
controlValues,
51+
(value: Fusion.Value<any>, update) => {
52+
return value.set(update);
53+
}
54+
);
3855
}

src/UI/StoryPreview/PreviewController/Mounters/FusionLib/index.tsx

+6-4
Original file line numberDiff line numberDiff line change
@@ -81,17 +81,19 @@ function FusionLib(props: MounterProps<"FusionLib">) {
8181
}
8282
});
8383
if (value) {
84-
if (typeIs(value, "Instance")) {
84+
if (typeIs(value, "function")) {
85+
return value;
86+
} else {
8587
if (version === "Fusion3") {
8688
const scope = Cast<Fusion3>(fusion);
8789
scope.Hydrate(props.MountFrame)({
8890
[fusion.Children]: value
8991
});
9092
} else {
91-
return () => value.Destroy();
93+
fusion.Hydrate(props.MountFrame)({
94+
[fusion.Children]: value
95+
});
9296
}
93-
} else {
94-
return value;
9597
}
9698
} else {
9799
return undefined;

0 commit comments

Comments
 (0)