From d016ed058927a6dd9bbd9b97cdce48a6c18ca8c2 Mon Sep 17 00:00:00 2001 From: Thomas Chazot Date: Wed, 4 Jan 2023 22:47:44 +0100 Subject: [PATCH] Add: AddConversation --- bob_party/assets/Icons/UnSelected/Add.png | Bin 0 -> 7431 bytes bob_party/src/components/TopBar.tsx | 12 +++ bob_party/src/navigation/AppNavigator.tsx | 2 + bob_party/src/screens/AddConversation.tsx | 80 ++++++++++++++++++ bob_party/src/screens/Chat.tsx | 6 +- .../src/services/gameService/loaderGameApi.ts | 1 - 6 files changed, 97 insertions(+), 4 deletions(-) create mode 100644 bob_party/assets/Icons/UnSelected/Add.png create mode 100644 bob_party/src/screens/AddConversation.tsx diff --git a/bob_party/assets/Icons/UnSelected/Add.png b/bob_party/assets/Icons/UnSelected/Add.png new file mode 100644 index 0000000000000000000000000000000000000000..f2b7273783d90deafb98d0d09d286829289f742c GIT binary patch literal 7431 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%0ApX%TWt-ht!WhpFj5Ao5m@( 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 E1^w}-p8x;= literal 0 HcmV?d00001 diff --git a/bob_party/src/components/TopBar.tsx b/bob_party/src/components/TopBar.tsx index 48059b8..26da7d5 100644 --- a/bob_party/src/components/TopBar.tsx +++ b/bob_party/src/components/TopBar.tsx @@ -79,6 +79,18 @@ FC<{nav: any, state?: string}> = ) + case 'addConversation': + return ( + + {nav.goBack()}}> + + + Chat with your friends + + + + + ) default: return ( diff --git a/bob_party/src/navigation/AppNavigator.tsx b/bob_party/src/navigation/AppNavigator.tsx index b066ad7..8726749 100644 --- a/bob_party/src/navigation/AppNavigator.tsx +++ b/bob_party/src/navigation/AppNavigator.tsx @@ -15,6 +15,7 @@ import SignUp from '../screens/SignUp' import LobbySolo from '../screens/LobbySolo' import CookieClicker from '../Games/CookieClicker/cookieClicker' import Conversation from '../screens/ConversationScreen' +import AddConversation from '../screens/AddConversation' import TicTacToe from '../Games/Tic-Tac-Toe/tic_tac_toe' @@ -60,6 +61,7 @@ function ChatStackScreen() { + ); } diff --git a/bob_party/src/screens/AddConversation.tsx b/bob_party/src/screens/AddConversation.tsx new file mode 100644 index 0000000..a4d3560 --- /dev/null +++ b/bob_party/src/screens/AddConversation.tsx @@ -0,0 +1,80 @@ +import { Pressable, TextInput, View, Text, Alert } from "react-native"; +import styles from "./style/SignIn.style"; +import stylesScreen from './style/screens.style' +import { useState } from "react"; +import React from "react"; +import { MANAGER_CONVERSATION, MANAGER_USER } from "../../appManagers"; +import { resolvePreset } from "@babel/core"; +import { useConversationStore } from "../context/conversationContext"; +import { socket } from "../../socketConfig"; + +export default function AddConversation(props: {navigation:any}){ + const {navigation}=props; + const [name, setName] = useState(''); + const [listId, setListId] = useState(''); + + const setTabConv = useConversationStore((state) => state.setTabConv); + + + async function handleCreateConv(name: string, listId: string){ + if (name.trim().length === 0){ + Alert.alert("Everyone needs a name even a conversation :)"); + return; + } + if (listId.trim().length === 0){ + Alert.alert("Specify the id of your friends to chat with them :)"); + return; + } + listId = listId.replace(/\s+/g, ''); + const tabId= listId.split(',').map(function(item) { + return parseInt(item, 10); + }); + let length=0; + let end=new Promise((resolve, reject) => { + tabId.forEach(async id =>{ + if (isNaN(id)){ + Alert.alert("The id must only be numbers"); + return; + } + if (id===MANAGER_USER.getCurrentUser()?.getId()){ + Alert.alert("You can't be part of the conversation 2 times :("); + return; + } + let us=await MANAGER_USER.getLoaderUser().loadByID(id).then((res)=>{ + if (res===null){ + Alert.alert("The id: " + id + " doesn't exist"); + return; + } + length++; + if (length==tabId.length){ + resolve(); + } + }); + }); + }); + await Promise.all([end]); + const tmp=MANAGER_USER.getCurrentUser(); + if (tmp!==null){ + await MANAGER_CONVERSATION.getsaverConversation().saveConversation(name, tmp, tabId, tmp.getUsername() + " created a conversation", new Date()).then((res)=>{ + if (res!==null){ + MANAGER_CONVERSATION.getTabConv().push(res); + setTabConv(MANAGER_CONVERSATION.getTabConv()); + socket.emit("messageSent", res); + navigation.goBack(); + } + }); + } + } + + return ( + + + setName(val)} autoCapitalize='none' /> + setListId(val)} autoCapitalize='none'/> + handleCreateConv(name, listId)}> + Add conversation + + + + ) +} \ No newline at end of file diff --git a/bob_party/src/screens/Chat.tsx b/bob_party/src/screens/Chat.tsx index 58e7c96..2fd579e 100644 --- a/bob_party/src/screens/Chat.tsx +++ b/bob_party/src/screens/Chat.tsx @@ -16,7 +16,7 @@ import styles from '../components/style/TopBar.style'; function Chat(props: { navigation: any; }) { const { navigation } = props - const cross = require('../../assets/Icons/UnSelected/Cross.png'); + const add = require('../../assets/Icons/UnSelected/Add.png'); return ( @@ -30,8 +30,8 @@ function Chat(props: { navigation: any; }) { renderItem={({item}) => } /> - navigation.navigate('Settings')}> - + navigation.navigate('AddConversation')} style={{alignItems:"center", alignContent:"center"}}> +