Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
127 commits
Select commit Hold shift + click to select a range
9c944fe
media files
May 20, 2022
4aa8344
Receiving media
Tanisha-Chaudhary May 23, 2022
7719346
uploading media files
Tanisha-Chaudhary May 27, 2022
0c11a82
upload-media
Tanisha-Chaudhary May 27, 2022
f9e2e23
Yarn lock file changed
Tanisha-Chaudhary May 27, 2022
4833ecd
Receiving media
Tanisha-Chaudhary May 23, 2022
ac782a5
uploading media files
Tanisha-Chaudhary May 27, 2022
725f643
upload-media
Tanisha-Chaudhary May 27, 2022
095dd53
media files
May 20, 2022
ff13130
Receiving media
Tanisha-Chaudhary May 23, 2022
3f96011
uploading media files
Tanisha-Chaudhary May 27, 2022
75804d7
upload-media
Tanisha-Chaudhary May 27, 2022
f2a0572
uploading media files
Tanisha-Chaudhary May 27, 2022
455b100
upload-media
Tanisha-Chaudhary May 27, 2022
2ff4436
Yarn lock changes
Tanisha-Chaudhary May 27, 2022
22994a8
media files
May 20, 2022
50484dd
uploading media files
Tanisha-Chaudhary May 27, 2022
c7dde5c
upload-media
Tanisha-Chaudhary May 27, 2022
ef00bdc
Yarn lock file changed
Tanisha-Chaudhary May 27, 2022
8074dd3
Receiving media
Tanisha-Chaudhary May 23, 2022
99371d4
uploading media files
Tanisha-Chaudhary May 27, 2022
fa04b2b
upload-media
Tanisha-Chaudhary May 27, 2022
57930d6
media files
May 20, 2022
b6304ed
Receiving media
Tanisha-Chaudhary May 23, 2022
4ade0db
uploading media files
Tanisha-Chaudhary May 27, 2022
705a886
upload-media
Tanisha-Chaudhary May 27, 2022
7009d4e
media files
May 20, 2022
408eb38
Receiving media
Tanisha-Chaudhary May 23, 2022
8c6b809
uploading media files
Tanisha-Chaudhary May 27, 2022
7597790
upload-media
Tanisha-Chaudhary May 27, 2022
c776047
Yarn lock changes
Tanisha-Chaudhary May 27, 2022
cf918bc
media files
May 20, 2022
ae12627
uploading media files
Tanisha-Chaudhary May 27, 2022
e566a16
upload-media
Tanisha-Chaudhary May 27, 2022
99c6132
Yarn lock file changed
Tanisha-Chaudhary May 27, 2022
edc62ea
Receiving media
Tanisha-Chaudhary May 23, 2022
af394af
uploading media files
Tanisha-Chaudhary May 27, 2022
21dd00d
upload-media
Tanisha-Chaudhary May 27, 2022
670b19c
media files
May 20, 2022
43bfede
Receiving media
Tanisha-Chaudhary May 23, 2022
699f050
uploading media files
Tanisha-Chaudhary May 27, 2022
bb371b9
upload-media
Tanisha-Chaudhary May 27, 2022
e5c2ffa
uploading media files
Tanisha-Chaudhary May 27, 2022
1b88230
upload-media
Tanisha-Chaudhary May 27, 2022
1abb876
Yarn lock changes
Tanisha-Chaudhary May 27, 2022
df078e1
media files
May 20, 2022
9380662
Receiving media
Tanisha-Chaudhary May 23, 2022
819ff98
uploading media files
Tanisha-Chaudhary May 27, 2022
32e8a64
upload-media
Tanisha-Chaudhary May 27, 2022
d077c03
uploading media files
Tanisha-Chaudhary May 27, 2022
fa2df26
upload-media
Tanisha-Chaudhary May 27, 2022
a769398
media files
May 20, 2022
aa7e4d9
Receiving media
Tanisha-Chaudhary May 23, 2022
0cc631f
uploading media files
Tanisha-Chaudhary May 27, 2022
95c086c
upload-media
Tanisha-Chaudhary May 27, 2022
369029a
Yarn lock file changed
Tanisha-Chaudhary May 27, 2022
c050a4f
media files
May 20, 2022
e2a013e
Receiving media
Tanisha-Chaudhary May 23, 2022
279543e
uploading media files
Tanisha-Chaudhary May 27, 2022
c7aec56
upload-media
Tanisha-Chaudhary May 27, 2022
0af43dd
Yarn lock changes
Tanisha-Chaudhary May 27, 2022
4641612
media files
May 20, 2022
81754f0
Receiving media
Tanisha-Chaudhary May 23, 2022
682af4a
uploading media files
Tanisha-Chaudhary May 27, 2022
37ea199
upload-media
Tanisha-Chaudhary May 27, 2022
2b8ecba
Yarn lock file changed
Tanisha-Chaudhary May 27, 2022
ce1dd60
Receiving media
Tanisha-Chaudhary May 23, 2022
d4b6159
uploading media files
Tanisha-Chaudhary May 27, 2022
adc6fb9
upload-media
Tanisha-Chaudhary May 27, 2022
9e06e2b
media files
May 20, 2022
a7efa1e
Receiving media
Tanisha-Chaudhary May 23, 2022
e37931b
uploading media files
Tanisha-Chaudhary May 27, 2022
76cbc2d
upload-media
Tanisha-Chaudhary May 27, 2022
95752f1
uploading media files
Tanisha-Chaudhary May 27, 2022
dacca50
upload-media
Tanisha-Chaudhary May 27, 2022
73a0eb9
Yarn lock changes
Tanisha-Chaudhary May 27, 2022
c5ed082
media files
May 20, 2022
b994749
uploading media files
Tanisha-Chaudhary May 27, 2022
538e0d5
upload-media
Tanisha-Chaudhary May 27, 2022
bb472a7
Yarn lock file changed
Tanisha-Chaudhary May 27, 2022
38ece83
Receiving media
Tanisha-Chaudhary May 23, 2022
e31c588
uploading media files
Tanisha-Chaudhary May 27, 2022
6ccf3f6
upload-media
Tanisha-Chaudhary May 27, 2022
47cca36
media files
May 20, 2022
07794dc
Receiving media
Tanisha-Chaudhary May 23, 2022
b2001da
uploading media files
Tanisha-Chaudhary May 27, 2022
d8cce0e
upload-media
Tanisha-Chaudhary May 27, 2022
134f155
media files
May 20, 2022
67cb972
Receiving media
Tanisha-Chaudhary May 23, 2022
f244a26
uploading media files
Tanisha-Chaudhary May 27, 2022
35b5b63
upload-media
Tanisha-Chaudhary May 27, 2022
aab0cbb
Yarn lock changes
Tanisha-Chaudhary May 27, 2022
1fa4366
media files
May 20, 2022
8d2e961
uploading media files
Tanisha-Chaudhary May 27, 2022
3083cd1
upload-media
Tanisha-Chaudhary May 27, 2022
ec78987
Yarn lock file changed
Tanisha-Chaudhary May 27, 2022
7ad7b36
Receiving media
Tanisha-Chaudhary May 23, 2022
35d2513
uploading media files
Tanisha-Chaudhary May 27, 2022
21b349d
upload-media
Tanisha-Chaudhary May 27, 2022
76d3a63
media files
May 20, 2022
9b185cf
Receiving media
Tanisha-Chaudhary May 23, 2022
0976724
uploading media files
Tanisha-Chaudhary May 27, 2022
ab3e17e
upload-media
Tanisha-Chaudhary May 27, 2022
f0c8052
uploading media files
Tanisha-Chaudhary May 27, 2022
73ed7de
upload-media
Tanisha-Chaudhary May 27, 2022
e8052e6
Yarn lock changes
Tanisha-Chaudhary May 27, 2022
f47f876
media files
May 20, 2022
1873594
uploading media files
Tanisha-Chaudhary May 27, 2022
a7f4d5b
upload-media
Tanisha-Chaudhary May 27, 2022
cef2484
Yarn lock file changed
Tanisha-Chaudhary May 27, 2022
a8dec81
Receiving media
Tanisha-Chaudhary May 23, 2022
0b4bf43
uploading media files
Tanisha-Chaudhary May 27, 2022
e5fb549
upload-media
Tanisha-Chaudhary May 27, 2022
9fae6f1
media files
May 20, 2022
4a27f7e
uploading media files
Tanisha-Chaudhary May 27, 2022
8fbf111
upload-media
Tanisha-Chaudhary May 27, 2022
42b37b6
Yarn lock file changed
Tanisha-Chaudhary May 27, 2022
d7fe0ae
Receiving media
Tanisha-Chaudhary May 23, 2022
dd7d0a8
uploading media files
Tanisha-Chaudhary May 27, 2022
c6567f3
upload-media
Tanisha-Chaudhary May 27, 2022
4642c9d
Yarn lock changes
Tanisha-Chaudhary May 27, 2022
7298c96
inbound base url
Tanisha-Chaudhary May 30, 2022
f82ce2d
Uploading media changes
Tanisha-Chaudhary May 31, 2022
747b139
OTP UI
Tanisha-Chaudhary Jun 3, 2022
b30b5cc
otp login or register
Tanisha-Chaudhary Jun 17, 2022
64d1608
cookies and access token
Tanisha-Chaudhary Jun 17, 2022
998cda4
OTP Screens UI
Tanisha-Chaudhary Jun 21, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
"react-alert": "^7.0.3",
"react-alert-template-basic": "^1.0.2",
"react-bootstrap": "^2.4.0",
"react-cookie": "^4.1.1",
"react-dom": "^17.0.2",
"react-icons": "^4.3.1",
"react-scripts": "5.0.0",
Expand Down
153 changes: 132 additions & 21 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ import MessageWindow from "components/MessageWindow";
import TextBar from "components/TextBar";
import Notification from "components/Notifications";
import "styles/global.css";
const App = (): any => {
import {useLocation, useNavigate} from 'react-router-dom';
import { withCookies } from 'react-cookie';

const App = (props:any): any => {
const initialState: {
messages: any[];
username: string;
Expand All @@ -22,12 +25,19 @@ const App = (): any => {
};

const [state, setState] = useState(initialState);

const location = useLocation();
const navigate = useNavigate();
const [accessToken, setAccessToken] = useState();

const scrollToBottom = () => {
window.scrollTo(0, document.body.scrollHeight);
};

useEffect((): void => {
if(!location.state){
navigate('/login')
}
setAccessToken(props.cookies.get('access_token'));
registerOnMessageCallback(onMessageReceived);
registerOnSessionCallback(onSessionCreated);
scrollToBottom();
Expand All @@ -54,14 +64,61 @@ const App = (): any => {
// }
// console.log(msg.content.choices);
// }
setState({
...state,
messages: state.messages.concat({
username: "UCI",
text: msg.content.title,
choices: msg.content.choices,
}),
});
if (msg.content.msg_type === "IMAGE"){
setState({
...state,
messages: state.messages.concat({
username: "UCI",
text: msg.content.title,
image: msg.content.media_url,
choices: msg.content.choices,
caption: msg.content.caption,
}),
});
}
else if (msg.content.msg_type === "AUDIO"){
setState({
...state,
messages: state.messages.concat({
username: "UCI",
text: msg.content.title,
audio: msg.content.media_url,
choices: msg.content.choices,
}),
});
}
else if (msg.content.msg_type === "VIDEO"){
setState({
...state,
messages: state.messages.concat({
username: "UCI",
text: msg.content.title,
video: msg.content.media_url,
choices: msg.content.choices,
}),
});
}
else if (msg.content.msg_type === "DOCUMENT"){
setState({
...state,
messages: state.messages.concat({
username: "UCI",
text: msg.content.title,
doc: msg.content.media_url,
choices: msg.content.choices,
}),
});
}
else{
setState({
...state,
messages: state.messages.concat({
username: "UCI",
text: msg.content.title,
choices: msg.content.choices,
}),
});
}
};

const setUserName = (name: string) => {
Expand All @@ -71,15 +128,69 @@ const App = (): any => {
});
};

const sendMessage = (text: any) => {
send(text, state.session);
setState({
...state,
messages: state.messages.concat({
username: state.username,
text: text,
}),
});
const sendMessage = (text: any, media: any) => {
if(!accessToken){
navigate('/login')
}
else{
send(text, state.session, media || null, accessToken);
if(media){
if (media.mimeType.slice(0,5) === "image"){
setState({
...state,
messages: state.messages.concat({
username: state.username,
image: media.url
}),
});
}
else if (media.mimeType.slice(0,5) === "audio"){
setState({
...state,
messages: state.messages.concat({
username: state.username,
audio: media.url
}),
});
}
else if (media.mimeType.slice(0,5) === "video"){
setState({
...state,
messages: state.messages.concat({
username: state.username,
video: media.url,
}),
});
}
else if (media.mimeType.slice(0,11) === "application"){
setState({
...state,
messages: state.messages.concat({
username: state.username,
doc: media.url,
}),
});
}else{
setState({
...state,
messages: state.messages.concat({
username: state.username,
text: text,
doc: media.url
}),
});
}
}
else{
setState({
...state,
messages: state.messages.concat({
username: state.username,
text: text,
}),
});
}
}
};
if (state.username === null) {
console.log("Please set a username first");
Expand All @@ -93,7 +204,7 @@ const App = (): any => {

const selected = (option: any) => {
const toSend = option.key+" "+option.text;
sendMessage(toSend);
sendMessage(toSend, null);
}

return (
Expand All @@ -116,4 +227,4 @@ const App = (): any => {
);
};

export default App;
export default withCookies(App);
3 changes: 3 additions & 0 deletions src/assets/images/line.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/images/otp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/images/otpDone.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/images/resend.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions src/assets/images/userAccount.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
72 changes: 69 additions & 3 deletions src/components/MessageWindow/index.tsx
Original file line number Diff line number Diff line change
@@ -1,20 +1,32 @@
import { useRef, useEffect } from "react";
import "./index.css";
import { Box, Flex, Spacer, Button } from "@chakra-ui/react";
import { Link } from '@chakra-ui/react'
import { ExternalLinkIcon } from '@chakra-ui/icons'


const Message = ({
text,
username,
self,
choices,
data
data,
image,
caption,
audio,
video,
doc
}: {
text: any;
username: string;
self: boolean;
choices: any;
data: any;
image: any;
caption: string;
audio: any;
video: any;
doc: any;
}) => {
return (
<Flex>
Expand All @@ -23,7 +35,31 @@ const Message = ({
<Spacer />
<div className="chat-message chat-reciever">
<div className="message-username">{username}</div>
<div style={{ whiteSpace: "pre-wrap" }}>{text}</div>
{(!image && !audio && !video && !doc) &&
<div style={{ whiteSpace: "pre-wrap" }}>{text}</div>
}
{image &&
<div style={{ whiteSpace: "pre-wrap" }}><img src={image} style={{maxWidth: "300px"}}/></div>
}
{audio &&
<audio controls>
<source src={audio}/>
Your browser does not support the audio element.
</audio>
}
{video &&
<video width="320" height="240" controls>
<source src={video}/>
Your browser does not support the video tag.
</video>
}
{doc &&
<Button colorScheme='blackAlpha' padding="10px" marginTop='10px'>
<Link href={doc} isExternal>
Click to open this file <ExternalLinkIcon mx='2px' />
</Link>
</Button>
}
</div>
</>
)}
Expand All @@ -38,7 +74,32 @@ const Message = ({
}
>
<div className="message-username">{username}</div>
<div style={{ whiteSpace: "pre-wrap" }}>{text}</div>
{(!image && !audio && !video && !doc) &&
<div style={{ whiteSpace: "pre-wrap" }}>{text}</div>
}
{image &&
<div style={{ whiteSpace: "pre-wrap" }}><img src={image} style={{maxWidth: "300px"}}/></div>
}
{audio &&
<audio controls>
<source src={audio}/>
Your browser does not support the audio element.
</audio>
}
{video &&
<video width="320" height="240" controls>
<source src={video} />
Your browser does not support the video tag.
</video>
}
{doc &&
<Button colorScheme='blackAlpha' padding="10px" marginTop='10px'>
<Link href={doc} isExternal>
Click to open this file <ExternalLinkIcon mx='2px' />
</Link>
</Button>
}
<div style={{ whiteSpace: "pre-wrap" }}>{caption}</div>
</div>
{choices && choices.length > 0 && (
<div className="chat-choices-container">
Expand Down Expand Up @@ -79,6 +140,11 @@ const MessageWindow = (props: any) => {
self={username === msg.username}
choices={msg.choices}
data={props.selected}
image={msg.image}
caption={msg.caption}
audio={msg.audio}
video={msg.video}
doc={msg.doc}
/>
);
})}
Expand Down
38 changes: 34 additions & 4 deletions src/components/TextBar/index.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { useRef } from "react";
import { Box, Button, Input } from "@chakra-ui/react";
import { MdSend } from "react-icons/md";
import { ToastContainer, toast } from "react-toastify";
import "react-toastify/dist/ReactToastify.css";
import "styles/global.css";

import { useRef } from "react";
import 'bootstrap/dist/css/bootstrap.min.css';

const TextBar = (props: any) => {
const input: any = useRef(null);
const sendMessage = (e: any) => {
const sendMessage = (e: any) => {
e.preventDefault();
const message = input.current.value;
if(input.current.value.trim().length === 0) {
Expand All @@ -26,6 +26,29 @@ const TextBar = (props: any) => {

};

const uploadMedia = async (fileObj: any) => {
const data = new FormData();
data.append('file',fileObj);
try{
let res = await fetch(
`${process.env.REACT_APP_INBOUND_BASE_URL}/cdn/minioSignedUrl`,
{
method: 'post',
body: data,
}
);
let responseJson = await res.json();
if (res.status === 200) {
props.onSend(null, responseJson)
}else{
console.log('image not uploaded')
}
}
catch{
console.error('no response received');
}
};

return (
<>
{/* <div className="chat__footer" onBlur={handleBlur} >
Expand Down Expand Up @@ -76,7 +99,14 @@ const TextBar = (props: any) => {
placeholder="Type your message"
ref={input}
onKeyDown={sendMessageIfEnter}
/>
/>
<div className="file btn btn-primary" style={{position: "relative", overflow: "hidden", marginRight: '7px', paddingTop: '10px'}}>
Upload
<input type="file" name="file" style={{position: "absolute", fontSize: "50px", opacity: "0", right: "0", top: "0"}}
onChange={(event) => {
uploadMedia(event.target.files[0])
}}/>
</div>
<button className="send__btn" onClick={sendMessage} type="submit">
Send
</button>
Expand Down
Loading