chore: simplify events backend and signal hook

Signed-off-by: Heikki Hellgren <heikki.hellgren@op.fi>
This commit is contained in:
Heikki Hellgren
2023-12-14 15:47:29 +02:00
parent 3b6b645d93
commit 0b21422604
2 changed files with 23 additions and 26 deletions
@@ -14,7 +14,7 @@
* limitations under the License.
*/
import { signalApiRef } from '../api';
import { useApi } from '@backstage/core-plugin-api';
import { useApiHolder } from '@backstage/core-plugin-api';
import { JsonObject } from '@backstage/types';
import { useEffect, useState } from 'react';
@@ -23,10 +23,13 @@ export const useSignalApi = (
topic: string,
onMessage: (message: JsonObject) => void,
) => {
const signals = useApi(signalApiRef);
const apiHolder = useApiHolder();
// Use apiHolder instead useApi in case signalApi is not available in the
// backstage instance this is used
const signals = apiHolder.get(signalApiRef);
const [subscription, setSubscription] = useState<null | string>(null);
useEffect(() => {
if (!subscription) {
if (signals && !subscription) {
const sub = signals.subscribe(topic, onMessage);
setSubscription(sub);
}
@@ -34,7 +37,7 @@ export const useSignalApi = (
useEffect(() => {
return () => {
if (subscription) {
if (signals && subscription) {
signals.unsubscribe(subscription);
}
};