1- import React from 'react' ;
2- import { Image , SafeAreaView , StyleSheet , Text , TouchableOpacity , View } from 'react-native' ;
1+ import React , { useCallback , useEffect , useState } from 'react' ;
2+ import {
3+ Image ,
4+ SafeAreaView ,
5+ StyleSheet ,
6+ Text ,
7+ TouchableOpacity ,
8+ Pressable ,
9+ View ,
10+ } from 'react-native' ;
311import { Edit , Group , User , useTheme } from 'stream-chat-react-native' ;
412
513import { useAppContext } from '../context/AppContext' ;
14+ import { SecretMenu } from './SecretMenu.tsx' ;
615
716import type { DrawerContentComponentProps } from '@react-navigation/drawer' ;
817
9- const styles = StyleSheet . create ( {
18+ export const styles = StyleSheet . create ( {
1019 avatar : {
1120 borderRadius : 20 ,
1221 height : 40 ,
@@ -44,12 +53,26 @@ const styles = StyleSheet.create({
4453} ) ;
4554
4655export const MenuDrawer = ( { navigation } : DrawerContentComponentProps ) => {
56+ const [ secretMenuPressCounter , setSecretMenuPressCounter ] = useState ( 0 ) ;
57+ const [ secretMenuVisible , setSecretMenuVisible ] = useState ( false ) ;
58+
4759 const {
4860 theme : {
4961 colors : { black, grey, white } ,
5062 } ,
5163 } = useTheme ( ) ;
5264
65+ useEffect ( ( ) => {
66+ if ( ! secretMenuVisible && secretMenuPressCounter >= 7 ) {
67+ setSecretMenuVisible ( true ) ;
68+ }
69+ } , [ secretMenuVisible , secretMenuPressCounter ] ) ;
70+
71+ const closeSecretMenu = useCallback ( ( ) => {
72+ setSecretMenuPressCounter ( 0 ) ;
73+ setSecretMenuVisible ( false ) ;
74+ } , [ ] ) ;
75+
5376 const { chatClient, logout } = useAppContext ( ) ;
5477
5578 if ( ! chatClient ) {
@@ -59,7 +82,7 @@ export const MenuDrawer = ({ navigation }: DrawerContentComponentProps) => {
5982 return (
6083 < View style = { [ styles . container , { backgroundColor : white } ] } >
6184 < SafeAreaView style = { { flex : 1 } } >
62- < View style = { [ styles . userRow ] } >
85+ < Pressable onPress = { ( ) => setSecretMenuPressCounter ( c => c + 1 ) } style = { [ styles . userRow ] } >
6386 < Image
6487 source = { {
6588 uri : chatClient . user ?. image ,
@@ -76,9 +99,10 @@ export const MenuDrawer = ({ navigation }: DrawerContentComponentProps) => {
7699 >
77100 { chatClient . user ?. name }
78101 </ Text >
79- </ View >
102+ </ Pressable >
80103 < View style = { styles . menuContainer } >
81104 < View >
105+ < SecretMenu visible = { secretMenuVisible } close = { closeSecretMenu } />
82106 < TouchableOpacity
83107 onPress = { ( ) => navigation . navigate ( 'NewDirectMessagingScreen' ) }
84108 style = { styles . menuItem }
0 commit comments