From e3739f1a1f39022c64d44788930bc32645367b7e Mon Sep 17 00:00:00 2001 From: Hernan Torrisi Date: Fri, 24 May 2024 14:16:19 -0700 Subject: [PATCH] request instance of rive file --- src/hooks/useRiveFile.ts | 8 +++++--- src/types.ts | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/hooks/useRiveFile.ts b/src/hooks/useRiveFile.ts index dd289d0..3fc0db7 100644 --- a/src/hooks/useRiveFile.ts +++ b/src/hooks/useRiveFile.ts @@ -25,7 +25,11 @@ function useRiveFile(params: UseRiveFileParameters): RiveFileState { const loadRiveFile = async () => { setStatus('loading'); file = new RiveFile(params); + file.init(); file.on(EventType.Load, () => { + // We request an instance to add +1 to the referencesCount so it doesn't get destroyed + // while this hook is active + file?.getInstance(); setRiveFile(file); setStatus('success'); }); @@ -38,9 +42,7 @@ function useRiveFile(params: UseRiveFileParameters): RiveFileState { loadRiveFile(); return () => { - if (file) { - file.cleanup(); - } + file?.cleanup(); }; }, [params.src, params.buffer]); diff --git a/src/types.ts b/src/types.ts index f5c6c50..9ea138e 100644 --- a/src/types.ts +++ b/src/types.ts @@ -42,7 +42,9 @@ export type RiveState = { RiveComponent: (props: ComponentProps<'canvas'>) => JSX.Element; }; -export type UseRiveFileParameters = RiveFileParameters; +export type UseRiveFileParameters = Partial< + Omit +>; export type FileStatus = 'idle' | 'loading' | 'failed' | 'success';