fix: address review comments

Signed-off-by: Heikki Hellgren <heikki.hellgren@op.fi>
This commit is contained in:
Heikki Hellgren
2024-01-02 09:57:19 +02:00
parent 0b21422604
commit da5c3fb818
34 changed files with 413 additions and 465 deletions
+4 -3
View File
@@ -23,7 +23,8 @@ export const signalApiRef = createApiRef<SignalApi>({
/** @public */
export type SignalApi = {
subscribe(topic: string, onMessage: (message: JsonObject) => void): string;
unsubscribe(subscription: string): void;
subscribe(
topic: string,
onMessage: (message: JsonObject) => void,
): { unsubscribe: () => void };
};
+1 -1
View File
@@ -13,4 +13,4 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export * from './useSignalApi';
export * from './useSignal';
@@ -19,27 +19,26 @@ import { JsonObject } from '@backstage/types';
import { useEffect, useState } from 'react';
/** @public */
export const useSignalApi = (
topic: string,
onMessage: (message: JsonObject) => void,
) => {
export const useSignal = (topic: string) => {
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);
const [lastSignal, setLastSignal] = useState<JsonObject | null>(null);
useEffect(() => {
if (signals && !subscription) {
const sub = signals.subscribe(topic, onMessage);
setSubscription(sub);
let unsub: null | (() => void) = null;
if (signals) {
const { unsubscribe } = signals.subscribe(topic, (msg: JsonObject) => {
setLastSignal(msg);
});
unsub = unsubscribe;
}
}, [subscription, signals, onMessage, topic]);
useEffect(() => {
return () => {
if (signals && subscription) {
signals.unsubscribe(subscription);
if (signals && unsub) {
unsub();
}
};
}, [subscription, signals, topic]);
}, [signals, topic]);
return { lastSignal };
};