Compare commits
4 commits
c138fc68d0
...
48028193cc
Author | SHA1 | Date | |
---|---|---|---|
48028193cc | |||
bbd62ac898 | |||
d89f89d035 | |||
c87582c030 |
27 changed files with 453 additions and 5439 deletions
|
@ -3,8 +3,6 @@ const { merge } = require('webpack-merge')
|
|||
const path = require( 'path' );
|
||||
|
||||
const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
|
||||
const ReactRefreshTypeScript = require('react-refresh-typescript');
|
||||
|
||||
|
||||
const common = require('./webpack.common.js')
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ const common = require('./webpack.common.js')
|
|||
|
||||
module.exports = merge(common, {
|
||||
mode: 'production',
|
||||
devtool: false,
|
||||
devtool: 'source-map',
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
|
@ -35,4 +35,5 @@ module.exports = merge(common, {
|
|||
maxEntrypointSize: 512000,
|
||||
maxAssetSize: 512000,
|
||||
},
|
||||
plugins: [new MiniCssExtractPlugin()]
|
||||
})
|
||||
|
|
|
@ -2,28 +2,22 @@
|
|||
"name": "@chatbridge/client",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"repository": "https://git.jon-e.net/jonny/chatbridge",
|
||||
"author": "sneakers-the-rat <j@nny.fyi>",
|
||||
"license": "AGPL-3.0",
|
||||
"dependencies": {
|
||||
"@emotion/react": "^11.11.1",
|
||||
"@emotion/styled": "^11.11.0",
|
||||
"@mui/base": "^5.0.0-beta.8",
|
||||
"@mui/icons-material": "^5.14.1",
|
||||
"@mui/material": "^5.14.2",
|
||||
"@types/node": "^16.18.39",
|
||||
"@types/react": "^18.2.16",
|
||||
"@types/react-dom": "^18.2.7",
|
||||
"file-loader": "^6.2.0",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-scripts": "5.0.1",
|
||||
"sass": "^1.64.1",
|
||||
"typescript": "^4.9.5",
|
||||
"web-vitals": "^2.1.4"
|
||||
"typescript": "^4.9.5"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "NODE_ENV=development webpack serve -c ./config/webpack.dev.js --mode development",
|
||||
"build": "NODE_ENV=production webpack --config ./config/webpack.prod.js",
|
||||
"test": "react-scripts test",
|
||||
"eject": "react-scripts eject"
|
||||
"build": "NODE_ENV=production webpack --config ./config/webpack.prod.js"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"extends": [
|
||||
|
@ -33,10 +27,15 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.10",
|
||||
"@types/node": "^16.18.39",
|
||||
"@types/react": "^18.2.16",
|
||||
"@types/react-dom": "^18.2.7",
|
||||
"css-loader": "^6.8.1",
|
||||
"css-minimizer-webpack-plugin": "^5.0.1",
|
||||
"file-loader": "^6.2.0",
|
||||
"html-webpack-plugin": "^5.5.3",
|
||||
"mini-css-extract-plugin": "^2.7.6",
|
||||
"react-refresh": "^0.14.0",
|
||||
"react-refresh-typescript": "^2.0.9",
|
||||
"sass-loader": "^13.3.2",
|
||||
"style-loader": "^3.3.3",
|
||||
"ts-loader": "^9.4.4",
|
||||
|
|
|
@ -2,42 +2,16 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="theme-color" content="#000000" />
|
||||
<meta
|
||||
name="description"
|
||||
content="Web site created using create-react-app"
|
||||
/>
|
||||
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
|
||||
<!--
|
||||
manifest.json provides metadata used when your web app is installed on a
|
||||
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
|
||||
-->
|
||||
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
|
||||
<!--
|
||||
Notice the use of %PUBLIC_URL% in the tags above.
|
||||
It will be replaced with the URL of the `public` folder during the build.
|
||||
Only files inside the `public` folder can be referenced from the HTML.
|
||||
|
||||
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
|
||||
work correctly both with client-side routing and a non-root public URL.
|
||||
Learn how to configure a non-root public URL by running `npm run build`.
|
||||
-->
|
||||
<title>ChatBridge</title>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
<div id="root"></div>
|
||||
<!--
|
||||
This HTML file is a template.
|
||||
If you open it directly in the browser, you will see an empty page.
|
||||
|
||||
You can add webfonts, meta tags, or analytics to this file.
|
||||
The build step will place the bundled scripts into the <body> tag.
|
||||
|
||||
To begin the development, run `npm start` or `yarn start`.
|
||||
To create a production bundle, use `npm run build` or `yarn build`.
|
||||
-->
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,25 +1,8 @@
|
|||
{
|
||||
"short_name": "React App",
|
||||
"name": "Create React App Sample",
|
||||
"icons": [
|
||||
{
|
||||
"src": "favicon.ico",
|
||||
"sizes": "64x64 32x32 24x24 16x16",
|
||||
"type": "image/x-icon"
|
||||
},
|
||||
{
|
||||
"src": "logo192.png",
|
||||
"type": "image/png",
|
||||
"sizes": "192x192"
|
||||
},
|
||||
{
|
||||
"src": "logo512.png",
|
||||
"type": "image/png",
|
||||
"sizes": "512x512"
|
||||
}
|
||||
],
|
||||
"short_name": "ChatBridge",
|
||||
"name": "ChatBridge: Bridge ur chatz",
|
||||
"start_url": ".",
|
||||
"display": "standalone",
|
||||
"theme_color": "#000000",
|
||||
"background_color": "#ffffff"
|
||||
"theme_color": "#FFFFFF",
|
||||
"background_color": "#1C1B22"
|
||||
}
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
import React from 'react';
|
||||
import logo from './logo.svg';
|
||||
import { createTheme, ThemeProvider } from '@mui/material/styles';
|
||||
import { yellow} from "@mui/material/colors";
|
||||
import './sass/index.scss';
|
||||
import { yellow } from "@mui/material/colors";
|
||||
|
||||
|
||||
const theme = createTheme({
|
||||
palette:{
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import React from 'react';
|
||||
import {useState, useEffect} from "react";
|
||||
|
||||
import Table from '@mui/material/Table';
|
||||
import TableBody from '@mui/material/TableBody';
|
||||
|
@ -7,7 +6,6 @@ import TableCell from '@mui/material/TableCell';
|
|||
import TableRow from "@mui/material/TableRow";
|
||||
import TableContainer from '@mui/material/TableContainer';
|
||||
import TableHead from '@mui/material/TableHead';
|
||||
import Typography from "@mui/material/Typography";
|
||||
|
||||
|
||||
import GroupRow from "./groupRow";
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
import TableCell from '@mui/material/TableCell';
|
||||
import TableContainer from '@mui/material/TableContainer';
|
||||
import TableHead from '@mui/material/TableHead';
|
||||
import TableRow from '@mui/material/TableRow';
|
||||
import DeleteForeverIcon from '@mui/icons-material/DeleteForever';
|
||||
import IconButton from "@mui/material/IconButton"
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
import Grid from "@mui/material/Grid";
|
||||
import {useState} from "react";
|
||||
|
||||
import TextField from "@mui/material/TextField";
|
||||
import Button from "@mui/material/Button";
|
||||
|
||||
import {setBridgeLabel} from "../../api/bridge";
|
||||
import {useState} from "react";
|
||||
|
||||
|
||||
|
||||
export const JoinBridge = ({
|
||||
|
|
|
@ -1,15 +1,17 @@
|
|||
import {useEffect, useState} from "react";
|
||||
|
||||
import FormControl from "@mui/material/FormControl";
|
||||
import InputLabel from "@mui/material/InputLabel";
|
||||
import Select from "@mui/material/Select";
|
||||
import MenuItem from "@mui/material/MenuItem";
|
||||
import Button from "@mui/material/Button";
|
||||
import {stepCompleteType} from "./joinForm";
|
||||
|
||||
import {stepCompleteType} from "./joinForm";
|
||||
import {getSlackChannels, joinSlackChannel} from "../../api/slack";
|
||||
import {useEffect, useState} from "react";
|
||||
import {getDiscordChannels} from "../../api/discord";
|
||||
|
||||
import {channelsType} from "../../types/channel";
|
||||
import {bridgeType} from "../../types/bridge";
|
||||
import {getDiscordChannels} from "../../api/discord";
|
||||
|
||||
|
||||
export interface JoinChannelProps {
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
import {useState, useEffect} from "react";
|
||||
|
||||
import Button from '@mui/material/Button';
|
||||
|
||||
import {Group} from "../../types/group";
|
||||
import {JoinStep} from './joinStep';
|
||||
import {JoinLogin} from "./joinLogin";
|
||||
import {useState, useEffect} from "react";
|
||||
import Button from '@mui/material/Button';
|
||||
import {createChannel} from "../../api/channel";
|
||||
import {JoinBridge} from "./joinBridge";
|
||||
import JoinChannel from "./joinChannel";
|
||||
import {createChannel} from "../../api/channel";
|
||||
import {Group} from "../../types/group";
|
||||
import {bridgeType} from "../../types/bridge";
|
||||
|
||||
export interface JoinFormProps {
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
import React, {useState} from 'react';
|
||||
|
||||
import {Group} from '../../types/group'
|
||||
import {groupInvite} from '../../api/groups'
|
||||
import TextField from "@mui/material/TextField";
|
||||
import Button from "@mui/material/Button";
|
||||
|
||||
import {groupInvite} from '../../api/groups'
|
||||
import {Group} from '../../types/group'
|
||||
|
||||
|
||||
export interface JoinGroupProps {
|
||||
group: Group;
|
||||
setGroup: React.Dispatch<React.SetStateAction<Group>>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/*
|
||||
Select which platform you're joining from!
|
||||
*/
|
||||
|
||||
import React, {useEffect, useState} from 'react';
|
||||
|
||||
import InputLabel from '@mui/material/InputLabel';
|
||||
import MenuItem from '@mui/material/MenuItem';
|
||||
import FormControl from '@mui/material/FormControl';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import * as React from 'react';
|
||||
|
||||
import Accordion from '@mui/material/Accordion';
|
||||
import AccordionDetails from '@mui/material/AccordionDetails';
|
||||
import AccordionSummary from '@mui/material/AccordionSummary';
|
||||
|
@ -6,7 +7,6 @@ import Typography from '@mui/material/Typography';
|
|||
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
|
||||
import RadioButtonUncheckedIcon from '@mui/icons-material/RadioButtonUnchecked';
|
||||
import TaskAltIcon from '@mui/icons-material/TaskAlt';
|
||||
import {useState} from "react";
|
||||
|
||||
export interface JoinStepProps {
|
||||
children: any;
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import * as React from 'react';
|
||||
|
||||
import Tab from '@mui/material/Tab';
|
||||
import TabsList from '@mui/base/TabsList';
|
||||
import Tabs from '@mui/material/Tabs';
|
||||
import Box from "@mui/material/Box";
|
||||
import { styled } from '@mui/material/styles';
|
||||
|
|
|
@ -1,13 +1,10 @@
|
|||
import React from 'react';
|
||||
import {useState, useEffect} from "react";
|
||||
import TextField from '@mui/material/TextField';
|
||||
import Button from '@mui/material/Button';
|
||||
|
||||
import {JoinForm} from "../join/joinForm";
|
||||
import {JoinGroup} from '../join/joinGroup';
|
||||
|
||||
import {Group} from "../../types/group";
|
||||
import {groupInvite} from "../../api/groups";
|
||||
|
||||
export default function JoinPanel(){
|
||||
const [group, setGroup] = useState<Group>(undefined);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import React from 'react';
|
||||
import {useState, useEffect} from "react";
|
||||
|
||||
import TextField from '@mui/material/TextField';
|
||||
import Button from '@mui/material/Button';
|
||||
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
import {useEffect, useRef, useState} from "react";
|
||||
|
||||
import Button from "@mui/material/Button";
|
||||
|
||||
import {getDiscordInstallURL} from "../../api/discord";
|
||||
import {getBridgeByStateToken} from "../../api/bridge";
|
||||
import Button from "@mui/material/Button";
|
||||
|
||||
|
||||
export const DiscordLogin = ({
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import React, {useEffect, useRef, useState} from 'react'
|
||||
|
||||
import Button from "@mui/material/Button";
|
||||
|
||||
import {getSlackInstallURL} from "../../api/slack";
|
||||
import {getBridgeByStateToken} from "../../api/bridge";
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import * as React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import Typography from '@mui/material/Typography';
|
||||
import Box from '@mui/material/Box';
|
||||
|
||||
export default function TabPanel(props) {
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
import React from 'react';
|
||||
import ReactDOM from 'react-dom/client';
|
||||
import './sass/index.scss';
|
||||
import App from './App';
|
||||
|
||||
import './sass/index.scss';
|
||||
|
||||
const root = ReactDOM.createRoot(
|
||||
document.getElementById('root') as HTMLElement
|
||||
);
|
||||
|
|
|
@ -1,38 +0,0 @@
|
|||
.App {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.App-logo {
|
||||
height: 40vmin;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
.App-logo {
|
||||
animation: App-logo-spin infinite 20s linear;
|
||||
}
|
||||
}
|
||||
|
||||
.App-header {
|
||||
background-color: #282c34;
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: calc(10px + 2vmin);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.App-link {
|
||||
color: #61dafb;
|
||||
}
|
||||
|
||||
@keyframes App-logo-spin {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
body {
|
||||
margin: 0;
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
|
||||
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
|
||||
sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
|
||||
monospace;
|
||||
}
|
|
@ -8,7 +8,10 @@
|
|||
"scripts": {
|
||||
"start:client": "npm run start --prefix client",
|
||||
"start:server": "npm run start --prefix server",
|
||||
"start": "concurrently -k -n \"CLIENT,SERVER\" -c \"bgBlue.bold,bgRed.bold\" \"npm run start:client\" \"npm run start:server\""
|
||||
"start": "concurrently -k -n \"CLIENT,SERVER\" -c \"bgBlue.bold,bgRed.bold\" \"npm run start:client\" \"npm run start:server\"",
|
||||
"build:client": "npm run build --prefix client",
|
||||
"build:server": "npm run build --prefix server",
|
||||
"build": "npm run build:client; npm run build:server"
|
||||
},
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
|
|
|
@ -3,16 +3,14 @@
|
|||
"version": "1.0.0",
|
||||
"description": "bridging a bunch of chats together",
|
||||
"main": "index.js",
|
||||
"repository": "https://git.jon-e.net/jonny/ucla-chat",
|
||||
"author": "sneakers-the-rat <JLSaunders987@gmail.com>",
|
||||
"repository": "https://git.jon-e.net/jonny/chatbridge",
|
||||
"author": "sneakers-the-rat <j@nny.fyi>",
|
||||
"license": "AGPL-3.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"start": "NODE_ENV=development ts-node-dev --respawn --transpile-only --exit-child src/app.ts",
|
||||
"build": "../node_modules/.bin/tsc -p .",
|
||||
"typeorm": "../node_modules/.bin/typeorm-ts-node-commonjs",
|
||||
"migrate": "rm -rf build && yarn build && yarn ../node_modules/.bin/typeorm migration:generate ./src/migrations/added-user-entity -d ./src/utils/data-source.ts",
|
||||
"db:push": "rm -rf build && yarn build && yarn ../node_modules/.bin/typeorm migration:run -d src/utils/data-source.ts",
|
||||
"importData": "npx ts-node-dev --transpile-only --exit-child src/data/seeder.ts",
|
||||
"test": "jest"
|
||||
},
|
||||
|
@ -29,8 +27,6 @@
|
|||
"jsonwebtoken": "^9.0.1",
|
||||
"pg": "^8.11.1",
|
||||
"pm2": "^5.3.0",
|
||||
"pug": "^3.0.2",
|
||||
"redis": "^4.6.7",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"slugify": "^1.6.6",
|
||||
"typeorm": "^0.3.17",
|
||||
|
@ -45,7 +41,6 @@
|
|||
"@types/cors": "^2.8.13",
|
||||
"@types/express": "^4.17.17",
|
||||
"@types/jest": "^29.5.3",
|
||||
"@types/jsonwebtoken": "^9.0.2",
|
||||
"@types/node": "^20.4.2",
|
||||
"@types/pug": "^2.0.6",
|
||||
"@types/winston": "^2.4.4",
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
"strictPropertyInitialization": false,
|
||||
"strictNullChecks": false,
|
||||
"skipLibCheck": true,
|
||||
"outDir": "./build",
|
||||
"outDir": "./dist",
|
||||
"rootDir": ".",
|
||||
|
||||
},
|
||||
|
|
Loading…
Reference in a new issue