Backend folders organize and finshed send audio

This commit is contained in:
canove
2020-07-08 11:19:08 -03:00
parent 87e4537ce2
commit c9cc973088
38 changed files with 61 additions and 21 deletions

View File

@@ -7,9 +7,9 @@ const cors = require("cors");
const sequelize = require("./database/");
const multer = require("multer");
const wBot = require("./controllers/wbot");
const wbotMessageListener = require("./controllers/wbotMessageListener");
const wbotMonitor = require("./controllers/wbotMonitor");
const wBot = require("./libs/wbot");
const wbotMessageListener = require("./services/wbotMessageListener");
const wbotMonitor = require("./services/wbotMonitor");
const messageRoutes = require("./routes/message");
const ContactRoutes = require("./routes/contacts");

View File

@@ -2,7 +2,7 @@ const Contact = require("../models/Contact");
const Message = require("../models/Message");
const Sequelize = require("sequelize");
const { getIO } = require("../libs/socket");
const { getWbot } = require("./wbot");
const { getWbot } = require("../libs/wbot");
exports.getContacts = async (req, res) => {
const { searchParam = "" } = req.query;

View File

@@ -2,7 +2,7 @@ const fs = require("fs");
const Message = require("../models/Message");
const Contact = require("../models/Contact");
const { getIO } = require("../libs/socket");
const { getWbot } = require("./wbot");
const { getWbot } = require("../libs/wbot");
const Sequelize = require("sequelize");
const { MessageMedia } = require("whatsapp-web.js");

View File

@@ -1,6 +1,6 @@
const Whatsapp = require("../models/Whatsapp");
const { getIO } = require("../libs/socket");
const { getWbot, init } = require("./wbot");
const { getWbot, init } = require("../libs/wbot");
exports.getSession = async (req, res, next) => {
const dbSession = await Whatsapp.findOne({ where: { id: 1 } });

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -5,7 +5,7 @@ const path = require("path");
const fs = require("fs");
const { getIO } = require("../libs/socket");
const { getWbot, init } = require("./wbot");
const { getWbot, init } = require("../libs/wbot");
const wbotMessageListener = () => {
const io = getIO();

View File

@@ -2,7 +2,7 @@ const Whatsapp = require("../models/Whatsapp");
const wbotMessageListener = require("./wbotMessageListener");
const { getIO } = require("../libs/socket");
const { getWbot, init } = require("./wbot");
const { getWbot, init } = require("../libs/wbot");
const wbotMonitor = () => {
const io = getIO();

View File

@@ -80,6 +80,11 @@ const useStyles = makeStyles(theme => ({
marginLeft: -12,
},
audioLoading: {
color: green[500],
opacity: "70%",
},
recorderWrapper: {
display: "flex",
alignItems: "center",
@@ -108,7 +113,6 @@ const MessagesInput = ({ searchParam }) => {
const [loading, setLoading] = useState(false);
const [recording, setRecording] = useState(false);
const [blobURL, setBlobURL] = useState("");
useEffect(() => {
return () => {
@@ -167,6 +171,7 @@ const MessagesInput = ({ searchParam }) => {
const handleSendMessage = async () => {
if (inputMessage.trim() === "") return;
setLoading(true);
const message = {
read: 1,
userId: userId,
@@ -180,9 +185,10 @@ const MessagesInput = ({ searchParam }) => {
}
setInputMessage("");
setShowEmoji(false);
setLoading(false);
};
const startRecording = () => {
const handleStartRecording = () => {
navigator.getUserMedia(
{ audio: true },
() => {
@@ -198,17 +204,40 @@ const MessagesInput = ({ searchParam }) => {
);
};
const stopRecording = () => {
const handleUploadAudio = () => {
setLoading(true);
Mp3Recorder.stop()
.getMp3()
.then(([buffer, blob]) => {
const blobURL = URL.createObjectURL(blob);
setBlobURL(blobURL);
.then(async ([buffer, blob]) => {
if (blob.size < 10000) {
setLoading(false);
setRecording(false);
return;
}
const formData = new FormData();
const filename = `${new Date().getTime()}.mp3`;
console.log(blob);
formData.append("media", blob, filename);
formData.append("messageBody", filename);
formData.append("userId", userId);
try {
await api.post(`/messages/${contactId}`, formData);
} catch (err) {
console.log(err);
alert(err);
}
setRecording(false);
setLoading(false);
})
.catch(e => console.log(e));
};
const handleCancelAudio = () => {
Mp3Recorder.stop()
.getMp3()
.then(() => setRecording(false));
};
if (media.preview)
return (
<Paper
@@ -246,10 +275,10 @@ const MessagesInput = ({ searchParam }) => {
else {
return (
<Paper variant="outlined" square className={classes.newMessageBox}>
<audio src={blobURL} controls="controls" />
<IconButton
aria-label="emojiPicker"
component="span"
disabled={loading}
onClick={e => setShowEmoji(prevState => !prevState)}
>
<MoodIcon className={classes.sendMessageIcons} />
@@ -272,7 +301,7 @@ const MessagesInput = ({ searchParam }) => {
onChange={handleChangeMedia}
/>
<label htmlFor="upload-button">
<IconButton aria-label="upload" component="span">
<IconButton aria-label="upload" component="span" disabled={loading}>
<AttachFileIcon className={classes.sendMessageIcons} />
</IconButton>
</label>
@@ -286,7 +315,8 @@ const MessagesInput = ({ searchParam }) => {
disabled={recording}
onPaste={handleInputPaste}
onKeyPress={e => {
if (e.key === "Enter") {
if (loading) return;
else if (e.key === "Enter") {
handleSendMessage();
}
}}
@@ -297,6 +327,7 @@ const MessagesInput = ({ searchParam }) => {
aria-label="sendMessage"
component="span"
onClick={handleSendMessage}
disabled={loading}
>
<SendIcon className={classes.sendMessageIcons} />
</IconButton>
@@ -306,15 +337,24 @@ const MessagesInput = ({ searchParam }) => {
aria-label="cancelRecording"
component="span"
fontSize="large"
onClick={e => setRecording(false)}
disabled={loading}
onClick={handleCancelAudio}
>
<HighlightOffIcon className={classes.cancelAudioIcon} />
</IconButton>
<RecordingTimer />
{loading ? (
<div>
<CircularProgress className={classes.audioLoading} />
</div>
) : (
<RecordingTimer />
)}
<IconButton
aria-label="sendRecordedAudio"
component="span"
onClick={stopRecording}
onClick={handleUploadAudio}
disabled={loading}
>
<CheckCircleOutlineIcon className={classes.sendAudioIcon} />
</IconButton>
@@ -323,7 +363,7 @@ const MessagesInput = ({ searchParam }) => {
<IconButton
aria-label="showRecorder"
component="span"
onClick={startRecording}
onClick={handleStartRecording}
>
<MicIcon className={classes.sendMessageIcons} />
</IconButton>