Added chat

This commit is contained in:
tdgmcode 2023-03-15 02:04:33 -04:00
parent a71e551310
commit 56af0926d7
13 changed files with 645 additions and 21 deletions

View file

@ -59,6 +59,9 @@
<a href='/new_post'>
Create
</a>
<a href='/chat/main'>
Chat
</a>
{:else}
<a href='/account/login'>
Log in

View file

@ -7,7 +7,8 @@ const AUTH_ACTIONS = [
'vote',
'postDelete',
'pfp',
'follow'
'follow',
'chatAdd'
];
const FILE_DIRS = [
@ -62,6 +63,13 @@ async function initDb() {
time INTEGER \
)');
await db.run('CREATE TABLE IF NOT EXISTS chat ( \
username CHAR(64), \
content CHAR(10240), \
time INTEGER, \
room CONTENT(64) \
)');
await db.run('CREATE TABLE IF NOT EXISTS vote ( \
id CHAR(64), \
username CHAR(64), \
@ -99,7 +107,12 @@ let backendProxy = async ({route, backendParams}) => {
extraParams['db'] = db;
let user = (await backend.token({cookies: backendParams.cookies},extraParams)) || {};
let jason = {cookies: backendParams.cookies};
if (backendParams.token)
jason.token = backendParams.token;
let user = (await backend.token(jason,extraParams)) || {};
user = user.data;

View file

@ -178,8 +178,6 @@ backend.postCreate = async ({content}, {user,db}) => {
if (lengthCheck)
return lengthCheck;
if (!content) return {'success': 'There is no post!' };
var id = randomBytes(10).toString('hex');
var postFlatten = formatPost(content).flat();
@ -378,8 +376,13 @@ backend.vote = async ({id, vote}, {user, db}) => {
return {data: {up,down}};
}
backend.token = async ({cookies}, {db}) => {
var tokenIn = cookies.get('token');
backend.token = async ({cookies, token}, {db}) => {
var tokenIn;
if (token) {
tokenIn = token;
} else {
tokenIn = cookies.get('token');
}
var existingAccounts = await db.all('SELECT username from token WHERE token = ?',[
tokenIn
@ -388,7 +391,7 @@ backend.token = async ({cookies}, {db}) => {
if (!existingAccounts || existingAccounts.length < 1)
return false;
return {data: existingAccounts[0].username};
return {data: existingAccounts[0].username, token: tokenIn};
}
backend.follow = async ({target}, {user, db}) => {
@ -451,6 +454,33 @@ backend.messages = async ({isRead}, {user, db}) => {
return {'data': {msg, read}};
};
backend.chatAdd = async ({content, room}, {user,db}) => {
if (!content) return {'success': 'No message provided.'}
var lengthCheck = checkLength(content,'Post content',1,10240);
if (lengthCheck)
return lengthCheck;
let time = Math.floor(new Date() * 1000);
await db.run('INSERT INTO chat (username, content, time, room) VALUES (?, ?, ?, ?)', [
user,
content,
time,
room
])
return {'data': {content, username: user, time, room}};
}
backend.chatGet = async ({room}, {user,db}) => {
let messages = await db.all('SELECT * from chat WHERE room = ? ORDER BY time LIMIT 1000', [
room
])
return {'data': messages};
}
export {
backend,

View file

@ -13,6 +13,12 @@ const formats = [
'bolditalic'
];
const postTypes = {
'@': 'users',
'#': 'post',
'%': 'chat'
}
let checkLength = function(string, field, lowerBound, upperBound) {
if (string.length < lowerBound) {
if (string.length == 0) {
@ -133,10 +139,10 @@ let formatPost = function(post, ignoreImg) {
return splitPost;
}
} else if (subPost[0] == '@' || subPost[0] == '#') {
} else if (postTypes[subPost[0] + '']) {
var subPostIn = safeName(subPost.substring(0));
var type = (subPost[0] == '@') ? 'users' : 'post';
var type = postTypes[subPost[0]];
splitPost = {'type': 'link', 'display': subPost, 'subtype': type, 'url': `/${type}/${subPostIn}`};