Skip to content

Instantly share code, notes, and snippets.

View hieptl's full-sized avatar
🎯
Focusing

Hiep Le hieptl

🎯
Focusing
View GitHub Profile
@hieptl
hieptl / cometchatcontext.js
Created September 3, 2021 05:37
CometChatContext.js - React Mention Chat App
...
setToastMessage = (type, message) => {
switch(type) {
case "error":
this.toastRef.setError(message);
break;
case "success":
this.toastRef.setSuccess(message);
break;
@hieptl
hieptl / index.js
Last active September 3, 2021 05:49
index.js - CometChatMessageList - Mention Chat App
...
showToastForMentionMessage = (message) => {
if (message.text.includes(`@${this.state.loggedInUser.name}`)) {
const toastMessage = `You was tagged by ${message.sender.name}`;
this.context.setToastMessage("success", toastMessage);
}
}
//callback for listener functions
messageUpdated = (key, message, group, options) => {
@hieptl
hieptl / index.js
Created September 12, 2021 08:36
index.js - CometChatMessages - Mention Chat App
class CometChatMessages extends React.PureComponent {
...
messageSent = messages => {
const message = messages[0];
const messageList = [...this.state.messageList];
let messageKey = messageList.findIndex(m => m._id === message._id);
if (messageKey > -1) {
const newMessageObj = { ...message };
const transformedMessage = this.messageListRef.transformSingleMessage(newMessageObj);
@hieptl
hieptl / index.js
Created September 12, 2021 08:46
index.js - CometC
...
class CometChatMessageList extends React.PureComponent {
...
constructor(props, context) {
...
this.members = React.createRef();
}
componentDidMount() {
@hieptl
hieptl / tinder_clone.sql
Created September 27, 2021 16:04
SQL - Tinder Clone
DROP DATABASE IF EXISTS tinder_clone;
CREATE DATABASE tinder_clone;
USE tinder_clone;
CREATE TABLE user_account (
id BIGINT NOT NULL AUTO_INCREMENT,
user_email VARCHAR(255) NOT NULL,
user_password VARCHAR(255) NOT NULL,
@hieptl
hieptl / index.js
Created September 28, 2021 03:32
index.js - Node.js - Tinder Clone
require("dotenv").config();
const bodyParser = require("body-parser");
const cors = require("cors");
const express = require("express");
const multer = require("multer");
const mysql = require("mysql");
const path = require("path");
const PORT = process.env.PORT || 8080;
const app = express();
@hieptl
hieptl / index.js
Created September 28, 2021 04:38
index.js - Routes - Tinder Clone
const authRoutes = require("./auth");
const userRoutes = require("./users");
const matchRequestsRoutes = require("./requests");
module.exports = function ({ app, dbConn, upload, constants }) {
authRoutes({ app, dbConn });
userRoutes({ app, dbConn, upload });
matchRequestsRoutes({ app, dbConn, constants });
};
@hieptl
hieptl / auth.js
Created September 28, 2021 04:54
auth.js - API - Tinder Clone
module.exports = function ({ app, dbConn }) {
app.post("/login", (req, res) => {
const { email, password } = req.body;
if (email && password) {
const sql = "SELECT * FROM user_account WHERE user_email = ? AND user_password = ?";
dbConn.query(sql, [email, password], function (err, result) {
if (result && result.length !== 0) {
res.status(200).jsonp({ gender: result[0].user_gender, uid: result[0].user_cometchat_uid });
} else {
res.status(200).jsonp({ message: "Your username or password is not correct" });
@hieptl
hieptl / users.js
Created September 28, 2021 05:09
users.js - Creating a New Account - Tinder Clone
app.post("/users/create", upload.single("avatar"), (req, res, next) => {
// validate the avatar. The avatar is requied.
const file = req.file;
if (!file || !file.mimetype.includes("jpeg")) {
res.status(200).jsonp({
message: "Please upload your avatar, the image should be .jpg format",
});
} else {
const avatar = `/img/${file.filename}`;
@hieptl
hieptl / users.js
Last active October 13, 2021 06:51
users.js - API - Recommend Users
const transformRecommendedUsers = (users) => {
if (users && users.length !== 0) {
return users.map(user => {
return {
id: user.id,
user_age: user.user_age,
user_avatar: user.user_avatar,
user_cometchat_uid: user.user_cometchat_uid,
user_email: user.user_email,
user_full_name: user.user_full_name,