diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..078bacd --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "cSpell.words": ["Pressable"] +} diff --git a/src/caj/Navigation.tsx b/src/caj/Navigation.tsx index 44b23ec..0eaf78a 100644 --- a/src/caj/Navigation.tsx +++ b/src/caj/Navigation.tsx @@ -44,6 +44,10 @@ import { LoginStackNavigatorParamList, RegisterScreenAnim, } from './components/NotLoggedIn'; +import ChatMainScreen, { + ChatMainStackNavigatorParamList, +} from './components/chat/screen/main'; +import ChatScreenStack from './components/chat/screen/main'; const styles = StyleSheet.create({ container: { @@ -59,6 +63,7 @@ export const linking: LinkingOptions<{}> = { export type RootStackNavigatorParamList = { Home: NavigatorScreenParams; Register: NavigatorScreenParams; + Chat: NavigatorScreenParams; }; export type RootScreenNavigationProp = @@ -69,6 +74,11 @@ export default function Navigation() { + ); } @@ -79,7 +89,7 @@ export type HomeStackNavigatorParamList = { Account: NavigatorScreenParams; Calendar: NavigatorScreenParams; Maps: NavigatorScreenParams; - Chat: NavigatorScreenParams; + ChatList: NavigatorScreenParams; }; function AccountTabAnim(props: any) { @@ -106,9 +116,9 @@ function MapsTabAnim(props: any) { } function ChatTabAnim(props: any) { return ( - + - + ); } @@ -118,7 +128,7 @@ function HomeStack() { - + ); } diff --git a/src/caj/components/NotLoggedIn.tsx b/src/caj/components/NotLoggedIn.tsx index 1df9818..d745d13 100644 --- a/src/caj/components/NotLoggedIn.tsx +++ b/src/caj/components/NotLoggedIn.tsx @@ -68,7 +68,7 @@ export default function NotLoggedIn() { ); const lang = useSelector((state: RootState) => state.appVariables.lang); - const theme = useSelector( + const theme = useSelector( (state: RootState) => state.appVariables.preferences.theme, ); diff --git a/src/caj/components/ProfilePicture.tsx b/src/caj/components/ProfilePicture.tsx index fa3c034..4a870ac 100644 --- a/src/caj/components/ProfilePicture.tsx +++ b/src/caj/components/ProfilePicture.tsx @@ -50,8 +50,6 @@ export function ProfilePicture(props: {size: number; UserId: UserId}) { hash = Math.abs(hash >> 16); - console.log(hash); - return ( state.nonSaveVariables.chatActivity, ); + const selectedChat = useSelector( + (state: RootState) => state.nonSaveVariables.selectedChat, + ); + + console.log('selectedChat', selectedChat); const space = 4; const ppSize = 64; @@ -25,6 +33,8 @@ export function ListChats() { const lang = useSelector((state: RootState) => state.appVariables.lang); + const navigation = useNavigation(); + return ( 0 ? tagSize / 2 + 'px' : ppSize / 2 + 'px' - } - marginX={space + 'px'} - padding={space + 'px'}> - - - - {user.AccountName.data} - - - - - {chat.unreadMessages} - - - - - - - - - {user.Username.data} - - - {'I love Chicken McNuggets von Burgerking'} - - - - {chat.tags.length > 0 ? ( - - {chat.tags.map((tag, i) => { - const tagObj = getTagUI(tag, lang); + onPress={() => { + store.dispatch(appNonSaveVarActions.setSelectedChat(chatId)); + navigation.navigate('Chat', {screen: 'Overview'}); + //navigation.navigate('Register', {screen: 'RegStepOne'}); + }}> + {({isHovered, isFocused, isPressed}) => { + return ( + 0 + ? tagSize / 2 + 'px' + : ppSize / 2 + 'px' + } + marginX={space + 'px'} + padding={space + 'px'}> + + + + {user.AccountName.data} + + + + + {chat.unreadMessages} + + + + + + + + + {user.Username.data} + + + {'I love Chicken McNuggets von Burgerking'} + + + + {chat.tags.length > 0 ? ( + + {chat.tags.map((tag, i) => { + const tagObj = getTagUI(tag, lang); - let tagName = tagObj.name; - return ( - - - {tagName} - - - ); - })} - - ) : null} - - + let tagName = tagObj.name; + return ( + + + {tagName} + + + ); + })} + + ) : null} + + + ); + }} + ); } })} diff --git a/src/caj/components/chat/screen/main.tsx b/src/caj/components/chat/screen/main.tsx new file mode 100644 index 0000000..8ed8da5 --- /dev/null +++ b/src/caj/components/chat/screen/main.tsx @@ -0,0 +1,50 @@ +import {defaultHeaderStyle} from '@caj/configs/colors'; +import {SlideFromRightView} from '@caj/helper/animations'; +import {RootState} from '@caj/redux/store'; +import { + createNativeStackNavigator, + NativeStackNavigationProp, +} from '@react-navigation/native-stack'; +import {Text} from 'native-base'; +import {useSelector} from 'react-redux'; + +export type ChatMainStackNavigatorParamList = { + Overview: undefined; +}; + +const ChatStack = createNativeStackNavigator(); + +export type ChatScreenNavigationProp = + NativeStackNavigationProp; + +function ChatScreenStack() { + const lang = useSelector((state: RootState) => state.appVariables.lang); + const theme = useSelector( + (state: RootState) => state.appVariables.preferences.theme, + ); + + return ( + + + + ); +} + +function ChatMainScreen() { + const chatId = useSelector( + (state: RootState) => state.nonSaveVariables.selectedChat, + ); + + return {chatId}; +} + +export default ChatScreenStack; diff --git a/src/caj/configs/appNonSaveVar.ts b/src/caj/configs/appNonSaveVar.ts index 9db4d1b..8a3a6a5 100644 --- a/src/caj/configs/appNonSaveVar.ts +++ b/src/caj/configs/appNonSaveVar.ts @@ -1,6 +1,6 @@ //these variables should not changed by the user and will not be saved in storage -import { chatEntity, chatId } from '@caj/components/chat/types'; +import {chatEntity, chatId} from '@caj/components/chat/types'; import {getVersionByNum, VersionType} from '@caj/helper/version'; import {User} from '@caj/user/types'; import {UserId} from './types'; @@ -26,8 +26,9 @@ export interface NON_SAVE_VARS { appStatus: appStatus; connectionStatus: connectionStatus; cachedUsers: {[key: UserId]: User}; - chats: {[key: chatId]: chatEntity} + chats: {[key: chatId]: chatEntity}; chatActivity: chatId[]; + selectedChat: chatId | 'none'; } export const non_save_vars: NON_SAVE_VARS = { @@ -37,4 +38,5 @@ export const non_save_vars: NON_SAVE_VARS = { cachedUsers: {}, chats: {}, chatActivity: [], + selectedChat: 'none', }; diff --git a/src/caj/configs/appNonSaveVarReducer.ts b/src/caj/configs/appNonSaveVarReducer.ts index 5488d2d..019d057 100644 --- a/src/caj/configs/appNonSaveVarReducer.ts +++ b/src/caj/configs/appNonSaveVarReducer.ts @@ -19,6 +19,9 @@ export const appNonSaveVariablesSlice = createSlice({ removeCachedUser: (state, action: PayloadAction) => { delete state.cachedUsers[action.payload]; }, + setSelectedChat: (state, action: PayloadAction) => { + state.selectedChat = action.payload; + }, setChatEntity: (state, action: PayloadAction) => { const chatId = action.payload.id;