diff --git a/app/api/src/docker/aws-emulator.js b/app/api/src/docker/aws-emulator.js index 375eed1..eddaae4 100644 --- a/app/api/src/docker/aws-emulator.js +++ b/app/api/src/docker/aws-emulator.js @@ -10,19 +10,22 @@ app.use(cors()) const invocationURL = (port) => `http://localhost:${port}/2015-03-31/functions/function/invocations` -const makeRequest = (route, port) => [route, async (req, res) => { - console.log(`making post request to ${port}, ${route}`) - try { - const { data } = await axios.post(invocationURL(port), { - body: JSON.stringify(req.body), - }) - res.status(data.statusCode) - res.send(data.body) - } catch (e) { - res.status(500) - res.send() - } -}] +const makeRequest = (route, port) => [ + route, + async (req, res) => { + console.log(`making post request to ${port}, ${route}`) + try { + const { data } = await axios.post(invocationURL(port), { + body: JSON.stringify(req.body), + }) + res.status(data.statusCode) + res.send(data.body) + } catch (e) { + res.status(500) + res.send() + } + }, +] app.post(...makeRequest('/openscad/preview', 5052)) app.post(...makeRequest('/openscad/stl', 5053)) diff --git a/app/api/src/docker/cadquery/runCQ.js b/app/api/src/docker/cadquery/runCQ.js index 3f1fda2..98b6b1b 100644 --- a/app/api/src/docker/cadquery/runCQ.js +++ b/app/api/src/docker/cadquery/runCQ.js @@ -1,9 +1,10 @@ const { makeFile, runCommand } = require('../common/utils') const { nanoid } = require('nanoid') -module.exports.runCQ = async ({ file, settings: { - deflection = 0.3 -} = {} } = {}) => { +module.exports.runCQ = async ({ + file, + settings: { deflection = 0.3 } = {}, +} = {}) => { const tempFile = await makeFile(file, '.py', nanoid) const fullPath = `/tmp/${tempFile}/output.stl` const command = `cq-cli/cq-cli --codec stl --infile /tmp/${tempFile}/main.py --outfile ${fullPath} --outputopts "deflection:${deflection};angularDeflection:${deflection};"` diff --git a/app/api/src/functions/identity-signup.ts b/app/api/src/functions/identity-signup.ts index 23cccd6..057a76f 100644 --- a/app/api/src/functions/identity-signup.ts +++ b/app/api/src/functions/identity-signup.ts @@ -3,7 +3,7 @@ import { db } from 'src/lib/db' import { sentryWrapper } from 'src/lib/sentry' import { enforceAlphaNumeric, generateUniqueString } from 'src/services/helpers' import 'graphql-tag' -import {sendMail} from 'src/lib/sendmail' +import { sendMail } from 'src/lib/sendmail' const unWrappedHandler = async (req, _context) => { const body = JSON.parse(req.body) @@ -57,7 +57,7 @@ const unWrappedHandler = async (req, _context) => { const user = body.user const email = user.email - let roles = [] + const roles = [] if (eventType === 'signup') { roles.push('user') @@ -77,7 +77,7 @@ const unWrappedHandler = async (req, _context) => { await sendMail({ to: 'k.hutten@protonmail.ch', from: { - address:'news@mail.cadhub.xyz', + address: 'news@mail.cadhub.xyz', name: 'CadHub', }, subject: `New Cadhub User`, diff --git a/app/api/src/lib/auth.ts b/app/api/src/lib/auth.ts index 539b0e9..e778583 100644 --- a/app/api/src/lib/auth.ts +++ b/app/api/src/lib/auth.ts @@ -121,7 +121,7 @@ export const getCurrentUser = async (decoded, { _token, _type }) => { * requireAuth({ role: ['editor', 'author'] }) * requireAuth({ role: ['publisher'] }) */ -export const requireAuth = ({ role }: {role?: string | string[]} = {}) => { +export const requireAuth = ({ role }: { role?: string | string[] } = {}) => { console.log(context.currentUser) if (!context.currentUser) { throw new AuthenticationError("You don't have permission to do that.") diff --git a/app/api/src/lib/sendmail.ts b/app/api/src/lib/sendmail.ts index c4d216e..a524fdb 100644 --- a/app/api/src/lib/sendmail.ts +++ b/app/api/src/lib/sendmail.ts @@ -1,4 +1,4 @@ -import nodemailer, {SendMailOptions} from 'nodemailer' +import nodemailer, { SendMailOptions } from 'nodemailer' interface Args { to: SendMailOptions['to'] @@ -15,42 +15,49 @@ interface SuccessResult { messageSize: number response: string envelope: { - from: string | false, + from: string | false to: string[] - }, + } messageId: string } -export function sendMail({to, from, subject, text}: Args): Promise { - let transporter = nodemailer.createTransport({ +export function sendMail({ + to, + from, + subject, + text, +}: Args): Promise { + const transporter = nodemailer.createTransport({ host: 'smtp.mailgun.org', port: 587, secure: false, tls: { - ciphers:'SSLv3' + ciphers: 'SSLv3', }, auth: { user: 'postmaster@mail.cadhub.xyz', - pass: process.env.EMAIL_PASSWORD - } - }); + pass: process.env.EMAIL_PASSWORD, + }, + }) - console.log({to, from, subject, text}); + console.log({ to, from, subject, text }) const emailPromise = new Promise((resolve, reject) => { - transporter.sendMail({ - from, - to, - subject, - text, - }, (error, info) => { - if (error) { - reject(error); - } else { - resolve(info); + transporter.sendMail( + { + from, + to, + subject, + text, + }, + (error, info) => { + if (error) { + reject(error) + } else { + resolve(info) + } } - }); + ) }) as any as Promise return emailPromise } - diff --git a/app/api/src/services/email/email.ts b/app/api/src/services/email/email.ts index 278296f..0d237fb 100644 --- a/app/api/src/services/email/email.ts +++ b/app/api/src/services/email/email.ts @@ -1,12 +1,12 @@ import { requireAuth } from 'src/lib/auth' -import {sendMail} from 'src/lib/sendmail' -import {users} from 'src/services/users/users' +import { sendMail } from 'src/lib/sendmail' +import { users } from 'src/services/users/users' -export const sendAllUsersEmail = async ({input: {body, subject}}) => { +export const sendAllUsersEmail = async ({ input: { body, subject } }) => { requireAuth({ role: 'admin' }) - const recipients = (await users()).map(({email}) => email) + const recipients = (await users()).map(({ email }) => email) const from = { - address:'news@mail.cadhub.xyz', + address: 'news@mail.cadhub.xyz', name: 'CadHub', } const result = await sendMail({ diff --git a/app/web/src/components/Footer/Footer.js b/app/web/src/components/Footer/Footer.js index 58e96b6..6fa8697 100644 --- a/app/web/src/components/Footer/Footer.js +++ b/app/web/src/components/Footer/Footer.js @@ -14,10 +14,7 @@ const Footer = () => { > Road Map - + Blog diff --git a/app/web/src/components/IdeViewer/IdeViewer.js b/app/web/src/components/IdeViewer/IdeViewer.js index 8ce86b4..a22317d 100644 --- a/app/web/src/components/IdeViewer/IdeViewer.js +++ b/app/web/src/components/IdeViewer/IdeViewer.js @@ -13,7 +13,7 @@ import { requestRender } from 'src/helpers/hooks/useIdeState' import texture from './dullFrontLitMetal.png' import { TextureLoader } from 'three/src/loaders/TextureLoader' -const loader = new TextureLoader +const loader = new TextureLoader() const colorMap = loader.load(texture) extend({ OrbitControls }) @@ -200,8 +200,8 @@ const IdeViewer = ({ Loading }) => { /> - - + + {state.objectData?.type === 'png' && ( <> diff --git a/app/web/src/helpers/cadPackages/cadQueryController.js b/app/web/src/helpers/cadPackages/cadQueryController.js index c5a16e0..17fd868 100644 --- a/app/web/src/helpers/cadPackages/cadQueryController.js +++ b/app/web/src/helpers/cadPackages/cadQueryController.js @@ -9,7 +9,7 @@ import { export const render = async ({ code }) => { const body = JSON.stringify({ settings: { - deflection: 0.2 + deflection: 0.2, }, file: code, }) diff --git a/app/web/src/pages/AdminEmailPage/AdminEmailPage.tsx b/app/web/src/pages/AdminEmailPage/AdminEmailPage.tsx index c36d18e..112b3bc 100644 --- a/app/web/src/pages/AdminEmailPage/AdminEmailPage.tsx +++ b/app/web/src/pages/AdminEmailPage/AdminEmailPage.tsx @@ -1,37 +1,55 @@ -import {useState} from 'react' +import { useState } from 'react' import { useMutation } from '@redwoodjs/web' import { toast, Toaster } from '@redwoodjs/web/toast' const SEND_EMAIL_MUTATION = gql` mutation sendEmailMutation($email: Email!) { - sendAllUsersEmail(input: $email) { - accepted + sendAllUsersEmail(input: $email) { + accepted + } } -} ` const AdminEmailPage = () => { const [subject, setSubject] = useState('') const [body, setBody] = useState('') const [sendEmailMutation] = useMutation(SEND_EMAIL_MUTATION, { - onCompleted: ({sendAllUsersEmail}) => { + onCompleted: ({ sendAllUsersEmail }) => { toast.success(`Emails sent, ${sendAllUsersEmail?.accepted.join(', ')}`) setSubject('') setBody('') }, }) - const sendEmail = () => sendEmailMutation({ variables: { email: { subject, body } } }) + const sendEmail = () => + sendEmailMutation({ variables: { email: { subject, body } } }) return (
-

Email all users

+

+ Email all users +

- setSubject(target.value)}/> + setSubject(target.value)} + /> - - + +
diff --git a/app/web/src/pages/SubjectAccessRequestsPage/SubjectAccessRequestsPage.js b/app/web/src/pages/SubjectAccessRequestsPage/SubjectAccessRequestsPage.js index 78e4c8c..deefbf1 100644 --- a/app/web/src/pages/SubjectAccessRequestsPage/SubjectAccessRequestsPage.js +++ b/app/web/src/pages/SubjectAccessRequestsPage/SubjectAccessRequestsPage.js @@ -1,6 +1,6 @@ import { useState, useEffect } from 'react' import SubjectAccessRequestsCell from 'src/components/SubjectAccessRequestsCell' -import { Flash, useQuery, useMutation, useFlash } from '@redwoodjs/web' +import { useQuery, useMutation } from '@redwoodjs/web' import { Form, Submit } from '@redwoodjs/forms' import MainLayout from 'src/layouts/MainLayout'