From 4959e86beeb71e735a4ce9f2590f5bf0ce37f78e Mon Sep 17 00:00:00 2001 From: Bibek Date: Tue, 22 Oct 2024 01:12:23 +0530 Subject: [PATCH 1/3] Add Project Page section to Account Page --- app/constants/routes.constants.ts | 1 + app/hooks/useAccountScreenItem.ts | 15 ++++++++- app/navigators/AppNavigator.tsx | 1 + app/navigators/TabNavigator.tsx | 8 +++-- app/screens/ProjectsScreen.tsx | 53 +++++++++++++++++++++++++++++++ app/screens/index.ts | 1 + 6 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 app/screens/ProjectsScreen.tsx diff --git a/app/constants/routes.constants.ts b/app/constants/routes.constants.ts index d0fa8f7..daee1d1 100644 --- a/app/constants/routes.constants.ts +++ b/app/constants/routes.constants.ts @@ -24,6 +24,7 @@ export enum RouteName { VideoPlayer = "VideoPlayer", Webview = "Webview", Welcome = "Welcome", + ProjectsScreen = "Projects " } export const TAB_ROUTES: Array<{ diff --git a/app/hooks/useAccountScreenItem.ts b/app/hooks/useAccountScreenItem.ts index d0059b2..4182c47 100644 --- a/app/hooks/useAccountScreenItem.ts +++ b/app/hooks/useAccountScreenItem.ts @@ -1,6 +1,6 @@ import { useCallback, useMemo } from "react" import { useNavigation } from "@react-navigation/core" -import { InfoIcon, LogOutIcon, ShieldIcon } from "lucide-react-native" +import { SettingsIcon, FolderCodeIcon, CircleUserIcon, InfoIcon, LogOutIcon, ShieldIcon } from "lucide-react-native" import { closeBottomSheet, openBottomSheet } from "app/utils" import { RouteName } from "app/constants" @@ -18,6 +18,14 @@ export const useAccountScreenItem = () => { [navigation], ) + const handleAccountDetailsPress = useCallback(() => { + navigation.navigate(RouteName.AccountDetails) + }, []) + + const handleProjectsPress = useCallback(() => { + navigation.navigate(RouteName.ProjectsScreen) + }, []) + const handleLogoutConfirm = useCallback(() => { closeBottomSheet() logout() @@ -35,6 +43,11 @@ export const useAccountScreenItem = () => { const accountItems = useMemo( () => [ + { + icon: FolderCodeIcon, + title: "Projects", + onPress: handleProjectsPress, + }, { icon: InfoIcon, title: "Terms & Conditions", diff --git a/app/navigators/AppNavigator.tsx b/app/navigators/AppNavigator.tsx index 0bb5ac9..590f41c 100644 --- a/app/navigators/AppNavigator.tsx +++ b/app/navigators/AppNavigator.tsx @@ -69,6 +69,7 @@ const AppStack = observer(function AppStack() { + ) }) diff --git a/app/navigators/TabNavigator.tsx b/app/navigators/TabNavigator.tsx index 7802513..d59b7d7 100644 --- a/app/navigators/TabNavigator.tsx +++ b/app/navigators/TabNavigator.tsx @@ -16,6 +16,7 @@ export type TabParamList = { History: undefined MyCourses: undefined Storybook: undefined + ProjectsScreen: undefined } /** @@ -76,7 +77,7 @@ export function TabNavigator() { screenOptions={{ headerShown: false, tabBarHideOnKeyboard: true, - tabBarStyle: [$tabBar, { height: bottom + 50 }], + tabBarStyle: [$tabBar, { height: bottom + 65 }], tabBarActiveTintColor: colors.content.brand, tabBarInactiveTintColor: colors.content.secondary, tabBarLabelStyle: $tabBarLabel, @@ -92,9 +93,10 @@ const $tabBar: ViewStyle = { backgroundColor: colors.background.secondary, borderTopColor: colors.border.default, borderTopWidth: 1, + paddingBottom: 10, // TODO: Can make an issue for this [#issue] - // borderTopRightRadius: spacing.md, - // borderTopLeftRadius: spacing.md, + //borderTopRightRadius: spacing.md, + //borderTopLeftRadius: spacing.md, } const $tabBarItem: ViewStyle = { diff --git a/app/screens/ProjectsScreen.tsx b/app/screens/ProjectsScreen.tsx new file mode 100644 index 0000000..36797a2 --- /dev/null +++ b/app/screens/ProjectsScreen.tsx @@ -0,0 +1,53 @@ +import React, { FC } from "react" +import { observer } from "mobx-react-lite" +import { TextStyle, ViewStyle } from "react-native" +import { FileCodeIcon } from "lucide-react-native" + +import { $styles, spacing } from "app/theme" +import { Button, EmptyPlaceholder, ListView, Screen, Text } from "app/components" +import { TabScreenProps } from "app/navigators" +import { ProjectCard } from "app/components/ProjectCard" + +interface ProjectsScreenProps extends TabScreenProps<"ProjectsScreen"> {} + + +const handleAddProject = () => { +} + +const renderEmptyPlaceholder = ( + +) + +export const ProjectsScreen: FC = observer(function ProjectsScreen() { + return ( + + +