Skip to content

Commit 5b5fb2e

Browse files
committed
fix(MqqtVariableMessenger): accepts both json and plain strings
1 parent 7b6ac9d commit 5b5fb2e

File tree

3 files changed

+21
-9
lines changed

3 files changed

+21
-9
lines changed

apps/figma-plugin/src/common/types/Message.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export enum MESSAGE_TYPE {
1414

1515
export enum LOCAL_STORAGE_KEYS {
1616
MQTT_CONNECTION = 'MQTT_CONNECTION',
17+
DARK_MODE = 'DARK_MODE',
1718
}
1819

1920
type SetUiOptionsMessage = {

apps/figma-plugin/src/ui/components/MqttVariableMessenger.ts

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ export function MqttVariableMessenger() {
1010
const { status, publish, subscribe, uniqueId } = useMqtt();
1111
const publishedVariableValues = useRef<Map<string, any | undefined>>(new Map());
1212
const knownVariables = useRef<Record<string, KnownVariable>>({}); // <id, name>
13-
const lastReceveivedVariables = useRef<Map<string, number>>(new Map());
1413

1514
async function publishVariables(variables?: Variable[]) {
1615
const newVariables =
@@ -52,7 +51,7 @@ export function MqttVariableMessenger() {
5251
useEffect(() => {
5352
if (status !== 'connected') return;
5453

55-
subscribe(`microflow/v1/${uniqueId}/+/variables/request`, topic => {
54+
const req = subscribe(`microflow/v1/${uniqueId}/+/variables/request`, topic => {
5655
const app = topic.split('/')[3];
5756
publish(
5857
`microflow/v1/${uniqueId}/${app}/variables/response`,
@@ -61,18 +60,29 @@ export function MqttVariableMessenger() {
6160
publishedVariableValues.current.forEach((value, id) => {
6261
publish(`microflow/v1/${uniqueId}/${app}/variable/${id}`, value);
6362
});
64-
});
63+
}).catch(console.error);
6564

66-
subscribe(`microflow/v1/${uniqueId}/+/variable/+/set`, async (topic, message) => {
65+
const set = subscribe(`microflow/v1/${uniqueId}/+/variable/+/set`, async (topic, message) => {
6766
const [, , , app, , variableId] = topic.split('/');
68-
const value = JSON.parse(message.toString());
67+
68+
let value = null;
69+
try {
70+
value = JSON.parse(message.toString());
71+
} catch (e) {
72+
value = message.toString();
73+
}
6974

7075
console.debug('[SET] <<<', value);
7176

7277
// Make sure we don't send the same value back to the app
7378
publishedVariableValues.current.set(variableId, JSON.stringify(value));
7479
sendMessageToFigma(SetLocalValiable(variableId, value as VariableValue));
75-
});
80+
}).catch(console.error);
81+
82+
return () => {
83+
req.then(unsub => unsub?.()).catch(console.error);
84+
set.then(unsub => unsub?.()).catch(console.error);
85+
};
7686
}, [status, subscribe, publish, uniqueId]);
7787

7888
useMessageListener<Variable[] | undefined>(MESSAGE_TYPE.GET_LOCAL_VARIABLES, publishVariables, {

packages/mqtt-provider/src/hooks/useMqttClient.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,21 +35,22 @@ export function useMqttClient() {
3535
callback: mqtt.OnMessageCallback,
3636
options?: mqtt.IClientSubscribeOptions | mqtt.IClientSubscribeProperties,
3737
) => {
38-
console.debug('[SUBSCRIBE]', topic, options);
38+
console.info('[SUBSCRIBE]', topic, options);
3939
subscriptions.current.set(topic, { callback, options });
4040
await client.current
41-
?.subscribeAsync(topic, options) // tODO: these options should be passed by subscriber
41+
?.subscribeAsync(topic, options) // TODO: these options should be passed by subscriber
4242
.catch(console.error);
4343

4444
return () => {
45+
console.info('[UNSUBSCRIBE]', topic, options);
4546
unsubscribe?.(topic)?.catch(console.error);
4647
};
4748
},
4849
[unsubscribe],
4950
);
5051

5152
const publish = useCallback((topic: string, payload: string, options?: IClientPublishOptions) => {
52-
console.debug('[PUBLISH]', topic, payload, options);
53+
console.info('[PUBLISH]', topic, payload, options);
5354
return client.current?.publishAsync(topic, payload, options);
5455
}, []);
5556

0 commit comments

Comments
 (0)