diff options
| author | Oskar Nyberg <oskar@mullvad.net> | 2020-09-28 17:03:05 +0200 |
|---|---|---|
| committer | Oskar Nyberg <oskar@mullvad.net> | 2020-10-13 13:54:21 +0200 |
| commit | becdea43225f6960fd9999b76afdb681fdaf80da (patch) | |
| tree | abd6372656743f188dd1d2179aad43896b7d1574 /gui/src/renderer/lib | |
| parent | ba755eba2604ff8dcda0f84272c30a2fdc9b2a51 (diff) | |
| download | mullvadvpn-becdea43225f6960fd9999b76afdb681fdaf80da.tar.xz mullvadvpn-becdea43225f6960fd9999b76afdb681fdaf80da.zip | |
Remember scroll position when navigating back
Diffstat (limited to 'gui/src/renderer/lib')
| -rw-r--r-- | gui/src/renderer/lib/utilityHooks.ts | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/gui/src/renderer/lib/utilityHooks.ts b/gui/src/renderer/lib/utilityHooks.ts index cbb5575f9b..4156c546ea 100644 --- a/gui/src/renderer/lib/utilityHooks.ts +++ b/gui/src/renderer/lib/utilityHooks.ts @@ -1,4 +1,4 @@ -import { useCallback, useEffect, useRef } from 'react'; +import React, { useCallback, useEffect, useRef } from 'react'; export function useMounted() { const mountedRef = useRef(false); @@ -13,3 +13,15 @@ export function useMounted() { return isMounted; } + +export function useCombinedRefs<T>(...refs: (React.Ref<T> | undefined)[]): React.RefCallback<T> { + return useCallback((element: T | null) => refs.forEach((ref) => assignToRef(element, ref)), []); +} + +function assignToRef<T>(element: T | null, ref?: React.Ref<T>) { + if (typeof ref === 'function') { + ref(element); + } else if (ref && element) { + (ref as React.MutableRefObject<T>).current = element; + } +} |
