about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2023-01-26 18:15:43 -0600
committerPaul Frazee <pfrazee@gmail.com>2023-01-26 18:15:43 -0600
commit20ccb03427f5be5b640fb72eb0b0e5bdc1f4103e (patch)
treebdbe51529f3ba2b9f4fd9e595ce15b59374eeccc /src
parentd04a6d7539c53ec3510175459c1ca8c8e7e994da (diff)
downloadvoidsky-20ccb03427f5be5b640fb72eb0b0e5bdc1f4103e.tar.zst
Fix to blurviews
Diffstat (limited to 'src')
-rw-r--r--src/view/com/util/BlurView.web.tsx39
-rw-r--r--src/view/com/util/ViewHeader.tsx5
-rw-r--r--src/view/com/util/ViewSelector.tsx3
-rw-r--r--src/view/com/util/Views.web.tsx12
-rw-r--r--src/view/lib/addStyle.ts11
-rw-r--r--src/view/screens/Profile.tsx3
6 files changed, 55 insertions, 18 deletions
diff --git a/src/view/com/util/BlurView.web.tsx b/src/view/com/util/BlurView.web.tsx
index a6097bf85..5adf0d1c0 100644
--- a/src/view/com/util/BlurView.web.tsx
+++ b/src/view/com/util/BlurView.web.tsx
@@ -1,4 +1,37 @@
-import {View} from 'react-native'
+import React from 'react'
+import {StyleSheet, View, ViewProps} from 'react-native'
+import {addStyle} from '../../lib/addStyle'
 
-// TODO can actually support this, see https://github.com/Kureev/react-native-blur/issues/417
-export const BlurBiew = View
+type BlurViewProps = ViewProps & {
+  blurType?: 'dark' | 'light'
+  blurAmount?: number
+}
+
+export const BlurView = ({
+  style,
+  blurType,
+  blurAmount,
+  ...props
+}: React.PropsWithChildren<BlurViewProps>) => {
+  // @ts-ignore using an RNW-specific attribute here -prf
+  style = addStyle(style, {backdropFilter: `blur(${blurAmount || 10}px`})
+  if (blurType === 'dark') {
+    style = addStyle(style, styles.dark)
+  } else {
+    style = addStyle(style, styles.light)
+  }
+  return <View style={style} {...props} />
+}
+
+const styles = StyleSheet.create({
+  blur: {
+    // @ts-ignore using an RNW-specific attribute here -prf
+    backdropFilter: 'blur(5px)',
+  },
+  dark: {
+    backgroundColor: '#0008',
+  },
+  light: {
+    backgroundColor: '#fff8',
+  },
+})
diff --git a/src/view/com/util/ViewHeader.tsx b/src/view/com/util/ViewHeader.tsx
index 472db7ee0..82eff2a81 100644
--- a/src/view/com/util/ViewHeader.tsx
+++ b/src/view/com/util/ViewHeader.tsx
@@ -10,6 +10,7 @@ import {
   FontAwesomeIcon,
   FontAwesomeIconStyle,
 } from '@fortawesome/react-native-fontawesome'
+import {CenteredView} from './Views'
 import {UserAvatar} from './UserAvatar'
 import {Text} from './text/Text'
 import {MagnifyingGlassIcon} from '../../lib/icons'
@@ -49,7 +50,7 @@ export const ViewHeader = observer(function ViewHeader({
     canGoBack = store.nav.tab.canGoBack
   }
   return (
-    <View style={[styles.header, pal.view]}>
+    <CenteredView style={[styles.header, pal.view]}>
       <TouchableOpacity
         testID="viewHeaderBackOrMenuBtn"
         onPress={canGoBack ? onPressBack : onPressMenu}
@@ -112,7 +113,7 @@ export const ViewHeader = observer(function ViewHeader({
           )}
         </TouchableOpacity>
       ) : undefined}
-    </View>
+    </CenteredView>
   )
 })
 
diff --git a/src/view/com/util/ViewSelector.tsx b/src/view/com/util/ViewSelector.tsx
index 0dd93ec64..ff5115c51 100644
--- a/src/view/com/util/ViewSelector.tsx
+++ b/src/view/com/util/ViewSelector.tsx
@@ -1,7 +1,8 @@
 import React, {useEffect, useState} from 'react'
-import {FlatList, View} from 'react-native'
+import {View} from 'react-native'
 import {Selector} from './Selector'
 import {HorzSwipe} from './gestures/HorzSwipe'
+import {FlatList} from './Views'
 import {useAnimatedValue} from '../../lib/hooks/useAnimatedValue'
 import {OnScrollCb} from '../../lib/hooks/useOnMainScroll'
 import {clamp} from '../../../lib/numbers'
diff --git a/src/view/com/util/Views.web.tsx b/src/view/com/util/Views.web.tsx
index fdb0fd1bf..313dda9cd 100644
--- a/src/view/com/util/Views.web.tsx
+++ b/src/view/com/util/Views.web.tsx
@@ -19,10 +19,10 @@ import {
   ScrollView as RNScrollView,
   ScrollViewProps,
   StyleSheet,
-  StyleProp,
   View,
   ViewProps,
 } from 'react-native'
+import {addStyle} from '../../lib/addStyle'
 
 export function CenteredView({
   style,
@@ -50,16 +50,6 @@ export function ScrollView({
   )
 }
 
-function addStyle<T>(
-  base: StyleProp<T>,
-  addedStyle: StyleProp<T>,
-): StyleProp<T> {
-  if (Array.isArray(base)) {
-    return base.concat([addedStyle])
-  }
-  return [base, addedStyle]
-}
-
 const styles = StyleSheet.create({
   container: {
     width: '100%',
diff --git a/src/view/lib/addStyle.ts b/src/view/lib/addStyle.ts
new file mode 100644
index 000000000..93a5390a1
--- /dev/null
+++ b/src/view/lib/addStyle.ts
@@ -0,0 +1,11 @@
+import {StyleProp} from 'react-native'
+
+export function addStyle<T>(
+  base: StyleProp<T>,
+  addedStyle: StyleProp<T>,
+): StyleProp<T> {
+  if (Array.isArray(base)) {
+    return base.concat([addedStyle])
+  }
+  return [base, addedStyle]
+}
diff --git a/src/view/screens/Profile.tsx b/src/view/screens/Profile.tsx
index 7fd813809..5c6616985 100644
--- a/src/view/screens/Profile.tsx
+++ b/src/view/screens/Profile.tsx
@@ -2,6 +2,7 @@ import React, {useEffect, useState} from 'react'
 import {ActivityIndicator, StyleSheet, View} from 'react-native'
 import {observer} from 'mobx-react-lite'
 import {ViewSelector} from '../com/util/ViewSelector'
+import {CenteredView} from '../com/util/Views'
 import {ScreenParams} from '../routes'
 import {ProfileUiModel, Sections} from '../../state/models/profile-ui'
 import {useStores} from '../../state'
@@ -181,7 +182,7 @@ export const Profile = observer(({navIdx, visible, params}: ScreenParams) => {
           onEndReached={onEndReached}
         />
       ) : (
-        renderHeader()
+        <CenteredView>{renderHeader()}</CenteredView>
       )}
       <FAB icon="pen-nib" onPress={onPressCompose} />
     </View>