summaryrefslogtreecommitdiffhomepage
path: root/gui/src/renderer/lib
diff options
context:
space:
mode:
authorOskar Nyberg <oskar@mullvad.net>2020-09-28 17:03:05 +0200
committerOskar Nyberg <oskar@mullvad.net>2020-10-13 13:54:21 +0200
commitbecdea43225f6960fd9999b76afdb681fdaf80da (patch)
treeabd6372656743f188dd1d2179aad43896b7d1574 /gui/src/renderer/lib
parentba755eba2604ff8dcda0f84272c30a2fdc9b2a51 (diff)
downloadmullvadvpn-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.ts14
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;
+ }
+}