From 3bfd9b2117e22b6d80d2bd91fe3ac74e134fa3ef Mon Sep 17 00:00:00 2001 From: srgooglo Date: Fri, 13 May 2022 21:35:49 +0200 Subject: [PATCH 01/17] added formWrapper style --- .../src/components/formGenerator/index.jsx | 37 +++++++++++-------- .../src/components/formGenerator/index.less | 5 +++ 2 files changed, 26 insertions(+), 16 deletions(-) create mode 100644 packages/app/src/components/formGenerator/index.less diff --git a/packages/app/src/components/formGenerator/index.jsx b/packages/app/src/components/formGenerator/index.jsx index 0ac704f6..66cab249 100644 --- a/packages/app/src/components/formGenerator/index.jsx +++ b/packages/app/src/components/formGenerator/index.jsx @@ -16,6 +16,8 @@ import { } from "antd" import HeadShake from "react-reveal/HeadShake" +import "./index.less" + const allComponents = { Input, Button, @@ -169,8 +171,9 @@ export default class FormGenerator extends React.Component { renderValidationIcon() { if (this.props.renderLoadingIcon && this.state.validating) { - return + return } + return null } @@ -376,20 +379,22 @@ export default class FormGenerator extends React.Component { return null } - return ( -
-
this.handleFinish(e)} - ref={this.ref} - {...this.props.formProps} - > - {this.renderItems(this.props.items)} - - - {this.renderValidationIcon()} -
- ) + return
+
this.handleFinish(e)} + ref={this.ref} + {...this.props.formProps} + > + {this.renderItems(this.props.items)} + + + {this.renderValidationIcon()} +
} } \ No newline at end of file diff --git a/packages/app/src/components/formGenerator/index.less b/packages/app/src/components/formGenerator/index.less new file mode 100644 index 00000000..de4bd14a --- /dev/null +++ b/packages/app/src/components/formGenerator/index.less @@ -0,0 +1,5 @@ +.formWrapper { + svg { + margin: 0; + } +} \ No newline at end of file From 5ae5c73b238e608ecb66e8be08862c0155d402ed Mon Sep 17 00:00:00 2001 From: srgooglo Date: Fri, 13 May 2022 21:47:27 +0200 Subject: [PATCH 02/17] remove login from pages --- packages/app/src/pages/login/index.jsx | 143 ------------------------ packages/app/src/pages/login/index.less | 55 --------- 2 files changed, 198 deletions(-) delete mode 100644 packages/app/src/pages/login/index.jsx delete mode 100644 packages/app/src/pages/login/index.less diff --git a/packages/app/src/pages/login/index.jsx b/packages/app/src/pages/login/index.jsx deleted file mode 100644 index 79f9f7c1..00000000 --- a/packages/app/src/pages/login/index.jsx +++ /dev/null @@ -1,143 +0,0 @@ -import React from "react" -import * as antd from "antd" -import { FormGenerator } from "components" -import { Icons } from "components/Icons" - -import config from "config" - -import "./index.less" - -const formInstance = [ - { - id: "username", - element: { - component: "Input", - icon: "User", - placeholder: "Username", - props: { - autoCorrect: "off", - autoCapitalize: "none", - className: "login-form-username", - }, - }, - item: { - hasFeedback: true, - rules: [ - { - required: true, - message: 'Please input your Username!', - }, - ], - } - }, - { - id: "password", - element: { - component: "Input", - icon: "Lock", - placeholder: "Password", - props: { - type: "password" - } - }, - item: { - hasFeedback: true, - rules: [ - { - required: true, - message: 'Please input your Password!', - }, - ], - } - }, - { - id: "login_btn", - withValidation: true, - element: { - component: "Button", - props: { - icon: "User", - children: "Login", - type: "primary", - htmlType: "submit" - } - } - }, -] - -export default class Login extends React.Component { - static pageStatement = { - bottomBarAllowed: false - } - - handleFinish = async (values, ctx) => { - ctx.toogleValidation(true) - - const payload = { - username: values.username, - password: values.password, - allowRegenerate: values.allowRegenerate, - } - - this.props.sessionController.login(payload, (error, response) => { - ctx.toogleValidation(false) - ctx.clearErrors() - - if (error) { - ctx.shake("all") - return ctx.error("result", error) - } else { - if (response.status === 200) { - this.onDone() - } - } - }) - } - - onDone = () => { - if (typeof this.props.onDone === "function") { - this.props.onDone() - } - } - - componentWillUnmount() { - window.app.SidebarController.toogleVisible(true) - window.app.HeaderController.toogleVisible(true) - } - - componentDidMount() { - const sidebarVisible = window.app.SidebarController.isVisible() - const headerVisible = window.app.HeaderController.isVisible() - - if (sidebarVisible) { - window.app.SidebarController.toogleVisible(false) - } - - if (headerVisible) { - window.app.HeaderController.toogleVisible(false) - } - } - - render() { - return ( -
- {this.props.session &&
-

You already have a valid session.

-
- @{this.props.session.username} -
- window.app.setLocation(config.app?.mainPath ?? "/main")} >Go to main -
} -
- -
-
- ) - } -} \ No newline at end of file diff --git a/packages/app/src/pages/login/index.less b/packages/app/src/pages/login/index.less deleted file mode 100644 index 30f1dad9..00000000 --- a/packages/app/src/pages/login/index.less +++ /dev/null @@ -1,55 +0,0 @@ -.app_login { - height: 100vh; - width: 100vw; - - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - - > div { - margin-bottom: 20px; - } -} - -.login-form { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; -} - -.login-form-username { - font-size: 20px!important; - - input { - padding: 20px!important; - font-size: 20px!important; - } -} - -.session_available { - width: fit-content; - height: fit-content; - - padding: 20px; - - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - - border: 1px solid #e5e5e5; - border-radius: 8px; - - .session_card { - width: fit-content; - height: fit-content; - - margin: 10px; - padding: 5px 10px; - - border: 1px solid #e5e5e5; - border-radius: 8px; - } -} From 61bcdff5fba86bb6a8f0e51857ddbca9b7de0a55 Mon Sep 17 00:00:00 2001 From: srgooglo Date: Fri, 13 May 2022 21:47:57 +0200 Subject: [PATCH 03/17] added `app.createLogin` & `app.logout` handlers --- packages/app/src/App.jsx | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/packages/app/src/App.jsx b/packages/app/src/App.jsx index 8528afcf..82f08f22 100644 --- a/packages/app/src/App.jsx +++ b/packages/app/src/App.jsx @@ -53,7 +53,7 @@ import { Translation } from "react-i18next" import { Session, User } from "models" import config from "config" -import { NotFound, RenderError, Crash, Settings, Navigation } from "components" +import { NotFound, RenderError, Crash, Settings, Navigation, Login } from "components" import { Icons } from "components/Icons" import Layout from "./layout" @@ -62,7 +62,16 @@ import * as Render from "extensions/render.extension.jsx" import "theme/index.less" class App extends React.Component { - //static debugMode = true + //static debugMode = true // this will enable debug mode of evite app (dah...) + + sessionController = new Session() + + userController = new User() + + state = { + session: null, + user: null, + } loadingMessage = false @@ -71,6 +80,16 @@ class App extends React.Component { } static eventsHandlers = { + "app.createLogin": async function () { + app.DrawerController.open("login", Login, { + componentProps: { + sessionController: this.sessionController + } + }) + }, + "session.logout": async function () { + await this.sessionController.logout() + }, "new_session": async function () { await this.flushState() await this.initialization() @@ -85,11 +104,12 @@ class App extends React.Component { this.eventBus.emit("forceToLogin") }, "forceToLogin": function () { - if (window.location.pathname !== "/login") { - this.beforeLoginLocation = window.location.pathname - } + // if (window.location.pathname !== "/login") { + // this.beforeLoginLocation = window.location.pathname + // } - window.app.setLocation("/login") + // window.app.setLocation("/login") + app.eventBus.emit("app.createLogin") }, "invalid_session": async function (error) { await this.sessionController.forgetLocalSession() @@ -246,13 +266,6 @@ class App extends React.Component { } } - sessionController = new Session() - userController = new User() - state = { - session: null, - user: null, - } - flushState = async () => { await this.setState({ session: null, user: null }) } From b9638f0c2c6702cc9a4258c5cb9849a8288ad74b Mon Sep 17 00:00:00 2001 From: srgooglo Date: Fri, 13 May 2022 21:48:06 +0200 Subject: [PATCH 04/17] added `Login` component --- packages/app/src/components/Login/index.jsx | 132 +++++++++++++++++++ packages/app/src/components/Login/index.less | 63 +++++++++ packages/app/src/components/index.js | 1 + 3 files changed, 196 insertions(+) create mode 100644 packages/app/src/components/Login/index.jsx create mode 100644 packages/app/src/components/Login/index.less diff --git a/packages/app/src/components/Login/index.jsx b/packages/app/src/components/Login/index.jsx new file mode 100644 index 00000000..6b8ef895 --- /dev/null +++ b/packages/app/src/components/Login/index.jsx @@ -0,0 +1,132 @@ +import React from "react" +import * as antd from "antd" +import { FormGenerator } from "components" +import { Icons } from "components/Icons" + +import config from "config" + +import "./index.less" + +const formInstance = [ + { + id: "username", + element: { + component: "Input", + icon: "User", + placeholder: "Username", + props: { + autoCorrect: "off", + autoCapitalize: "none", + className: "login-form-username", + }, + }, + item: { + hasFeedback: true, + rules: [ + { + required: true, + message: 'Please input your Username!', + }, + ], + } + }, + { + id: "password", + element: { + component: "Input", + icon: "Lock", + placeholder: "Password", + props: { + type: "password" + } + }, + item: { + hasFeedback: true, + rules: [ + { + required: true, + message: 'Please input your Password!', + }, + ], + } + }, + { + id: "login_btn", + withValidation: true, + element: { + component: "Button", + props: { + icon: "User", + children: "Login", + type: "primary", + htmlType: "submit" + } + } + }, +] + +export default class Login extends React.Component { + static pageStatement = { + bottomBarAllowed: false + } + + handleFinish = async (values, ctx) => { + ctx.toogleValidation(true) + + const payload = { + username: values.username, + password: values.password, + allowRegenerate: values.allowRegenerate, + } + + this.props.sessionController.login(payload, (error, response) => { + ctx.toogleValidation(false) + ctx.clearErrors() + + if (error) { + ctx.shake("all") + return ctx.error("result", error) + } else { + if (response.status === 200) { + this.onDone() + } + } + }) + } + + onDone = () => { + if (typeof this.props.onDone === "function") { + this.props.onDone() + } + + if (typeof this.props.close === "function") { + this.props.close() + } + } + + render() { + return ( +
+
+
+ +
+
+ {this.props.session &&
+

You already have a valid session.

+
+ @{this.props.session.username} +
+ window.app.setLocation(config.app?.mainPath ?? "/main")} >Go to main +
} + +
+ ) + } +} \ No newline at end of file diff --git a/packages/app/src/components/Login/index.less b/packages/app/src/components/Login/index.less new file mode 100644 index 00000000..14d587a4 --- /dev/null +++ b/packages/app/src/components/Login/index.less @@ -0,0 +1,63 @@ +.login { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + > div { + margin-bottom: 20px; + } + + .header { + .logo { + width: 15vw; + + img { + width: 100%; + height: 100%; + } + } + } +} + +.login-form { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.login-form-username { + font-size: 20px!important; + + input { + padding: 20px!important; + font-size: 20px!important; + } +} + +.session_available { + width: fit-content; + height: fit-content; + + padding: 20px; + + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + border: 1px solid #e5e5e5; + border-radius: 8px; + + .session_card { + width: fit-content; + height: fit-content; + + margin: 10px; + padding: 5px 10px; + + border: 1px solid #e5e5e5; + border-radius: 8px; + } +} diff --git a/packages/app/src/components/index.js b/packages/app/src/components/index.js index 5293b63a..dba491bc 100644 --- a/packages/app/src/components/index.js +++ b/packages/app/src/components/index.js @@ -22,6 +22,7 @@ export { default as Skeleton } from "./Skeleton" export { default as Navigation } from "./Navigation" export { default as ImageUploader } from "./ImageUploader" export { default as ImageViewer } from "./ImageViewer" +export { default as Login } from "./Login" // BUTTONS export { default as LikeButton } from "./LikeButton" From 4bf49f4050a92735ffdcceacba78b8e5841f87fc Mon Sep 17 00:00:00 2001 From: srgooglo Date: Fri, 13 May 2022 21:48:27 +0200 Subject: [PATCH 05/17] bump version --- .corenode | 2 +- package.json | 2 +- packages/app/package.json | 2 +- packages/desktop/package.json | 2 +- packages/server/package.json | 2 +- packages/streaming-server/package.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.corenode b/.corenode index a005c72a..2b0be6b5 100755 --- a/.corenode +++ b/.corenode @@ -1,3 +1,3 @@ { - "version": "0.17.1" + "version": "0.17.2" } diff --git a/package.json b/package.json index c1d50e53..b7385a60 100644 --- a/package.json +++ b/package.json @@ -9,5 +9,5 @@ "dependencies": { "corenode": "^0.28.26" }, - "version": "0.17.1" + "version": "0.17.2" } diff --git a/packages/app/package.json b/packages/app/package.json index 647df6bf..c4adc3a3 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "comty", - "version": "0.17.1", + "version": "0.17.2", "license": "MIT", "scripts": { "dev": "vite", diff --git a/packages/desktop/package.json b/packages/desktop/package.json index 1a828500..98f019db 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,6 +1,6 @@ { "name": "comty-desktop", - "version": "0.17.1", + "version": "0.17.2", "main": "main/index.js", "license": "MIT", "scripts": { diff --git a/packages/server/package.json b/packages/server/package.json index 69bf6e57..d1ce0243 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,6 +1,6 @@ { "name": "@comty/server", - "version": "0.17.1", + "version": "0.17.2", "main": "dist/index.js", "scripts": { "dev": "nodemon --ignore dist/ --exec corenode-node ./src/index.js" diff --git a/packages/streaming-server/package.json b/packages/streaming-server/package.json index fd8576d8..b58ba962 100644 --- a/packages/streaming-server/package.json +++ b/packages/streaming-server/package.json @@ -1,7 +1,7 @@ { "name": "@comty/streaming-server", "author": "RageStudio", - "version": "0.17.1", + "version": "0.17.2", "main": "dist/index.js", "scripts": { "dev": "nodemon --ignore dist/ --exec corenode-node ./src/index.js" From e94d8bd3511ead42c0e52ee34f4d5bdce04e2f85 Mon Sep 17 00:00:00 2001 From: srgooglo Date: Fri, 13 May 2022 22:09:16 +0200 Subject: [PATCH 06/17] emit `session.logout` --- packages/app/constants/settings/account.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/app/constants/settings/account.jsx b/packages/app/constants/settings/account.jsx index 9e57bb71..760eec89 100644 --- a/packages/app/constants/settings/account.jsx +++ b/packages/app/constants/settings/account.jsx @@ -144,6 +144,6 @@ export default [ "type": "Button", "icon": "LogOut", "title": "Logout", - "emitEvent": "logout", + "emitEvent": "session.logout", } ] \ No newline at end of file From 94400bbd53401884acd38ab7a76de882e4c7476f Mon Sep 17 00:00:00 2001 From: srgooglo Date: Fri, 13 May 2022 22:23:19 +0200 Subject: [PATCH 07/17] fix import --- packages/app/src/pages/users/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/app/src/pages/users/index.jsx b/packages/app/src/pages/users/index.jsx index 503ded1a..0dabab41 100644 --- a/packages/app/src/pages/users/index.jsx +++ b/packages/app/src/pages/users/index.jsx @@ -1,6 +1,6 @@ import React from "react" import * as antd from "antd" -import { Icons } from "components/icons" +import { Icons } from "components/Icons" import { ActionsBar, SelectableList } from "components" import "./index.less" From c4d8d34b00de4bf65ee89e0c2c82b8ed5d008cc4 Mon Sep 17 00:00:00 2001 From: srgooglo Date: Sat, 14 May 2022 19:43:55 +0200 Subject: [PATCH 08/17] use `getConnectionConfig` --- packages/server/src/index.js | 18 ++++++++++-------- .../src/managers/DbManager/index.js | 18 +++++++++--------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/packages/server/src/index.js b/packages/server/src/index.js index 4185bf6e..0bdec9ae 100644 --- a/packages/server/src/index.js +++ b/packages/server/src/index.js @@ -29,9 +29,14 @@ import jwt from "jsonwebtoken" const ExtractJwt = require("passport-jwt").ExtractJwt const LocalStrategy = require("passport-local").Strategy -function parseConnectionString(obj) { +function getConnectionConfig(obj) { const { db_user, db_driver, db_name, db_pwd, db_hostname, db_port } = obj - return `${db_driver ?? "mongodb"}://${db_user ? `${db_user}` : ""}${db_pwd ? `:${db_pwd}` : ""}${db_user ? "@" : ""}${db_hostname ?? "localhost"}:${db_port ?? ""}/${db_name ?? ""}` + + return [`${db_driver ?? "mongodb"}://${db_user ? `${db_user}` : ""}${db_pwd ? `:${db_pwd}` : ""}${db_user ? "@" : ""}${db_hostname ?? "localhost"}:${db_port ?? "27017"}/?authMechanism=DEFAULT`, { + dbName: db_name, + useNewUrlParser: true, + useUnifiedTopology: true, + }] } class Server { @@ -104,12 +109,9 @@ class Server { return new Promise((resolve, reject) => { try { console.log("🌐 Trying to connect to DB...") - const dbUri = parseConnectionString(this.env) - //console.log(dbUri) - mongoose.connect(dbUri, { - useNewUrlParser: true, - useUnifiedTopology: true - }) + const dbConfig = getConnectionConfig(this.env) + console.log(dbConfig) + mongoose.connect(...dbConfig) .then((res) => { return resolve(true) }) .catch((err) => { return reject(err) }) } catch (err) { diff --git a/packages/streaming-server/src/managers/DbManager/index.js b/packages/streaming-server/src/managers/DbManager/index.js index 3531eb2c..541c9d99 100644 --- a/packages/streaming-server/src/managers/DbManager/index.js +++ b/packages/streaming-server/src/managers/DbManager/index.js @@ -1,8 +1,13 @@ import mongoose from "mongoose" -function parseConnectionString(obj) { +function getConnectionConfig(obj) { const { db_user, db_driver, db_name, db_pwd, db_hostname, db_port } = obj - return `${db_driver ?? "mongodb"}://${db_user ? `${db_user}` : ""}${db_pwd ? `:${db_pwd}` : ""}${db_user ? "@" : ""}${db_hostname ?? "localhost"}:${db_port ?? ""}/${db_name ?? ""}` + + return [`${db_driver ?? "mongodb"}://${db_user ? `${db_user}` : ""}${db_pwd ? `:${db_pwd}` : ""}${db_user ? "@" : ""}${db_hostname ?? "localhost"}:${db_port ?? "27017"}/?authMechanism=DEFAULT`, { + dbName: db_name, + useNewUrlParser: true, + useUnifiedTopology: true, + }] } export default class DBManager { @@ -14,14 +19,9 @@ export default class DBManager { return new Promise((resolve, reject) => { try { console.log("🌐 Trying to connect to DB...") - const dbUri = parseConnectionString(this.env) + const dbConfig = getConnectionConfig(this.env) - //console.log(dbUri) - - mongoose.connect(dbUri, { - useNewUrlParser: true, - useUnifiedTopology: true - }) + mongoose.connect(...dbConfig) .then((res) => { return resolve(true) }) .catch((err) => { return reject(err) }) } catch (err) { From 704500f50ad42370159af635764ab0cb8a16ab6d Mon Sep 17 00:00:00 2001 From: srgooglo Date: Fri, 13 May 2022 21:35:49 +0200 Subject: [PATCH 09/17] added formWrapper style --- .../src/components/formGenerator/index.jsx | 37 +++++++++++-------- .../src/components/formGenerator/index.less | 5 +++ 2 files changed, 26 insertions(+), 16 deletions(-) create mode 100644 packages/app/src/components/formGenerator/index.less diff --git a/packages/app/src/components/formGenerator/index.jsx b/packages/app/src/components/formGenerator/index.jsx index 0ac704f6..66cab249 100644 --- a/packages/app/src/components/formGenerator/index.jsx +++ b/packages/app/src/components/formGenerator/index.jsx @@ -16,6 +16,8 @@ import { } from "antd" import HeadShake from "react-reveal/HeadShake" +import "./index.less" + const allComponents = { Input, Button, @@ -169,8 +171,9 @@ export default class FormGenerator extends React.Component { renderValidationIcon() { if (this.props.renderLoadingIcon && this.state.validating) { - return + return } + return null } @@ -376,20 +379,22 @@ export default class FormGenerator extends React.Component { return null } - return ( -
-
this.handleFinish(e)} - ref={this.ref} - {...this.props.formProps} - > - {this.renderItems(this.props.items)} - - - {this.renderValidationIcon()} -
- ) + return
+
this.handleFinish(e)} + ref={this.ref} + {...this.props.formProps} + > + {this.renderItems(this.props.items)} + + + {this.renderValidationIcon()} +
} } \ No newline at end of file diff --git a/packages/app/src/components/formGenerator/index.less b/packages/app/src/components/formGenerator/index.less new file mode 100644 index 00000000..de4bd14a --- /dev/null +++ b/packages/app/src/components/formGenerator/index.less @@ -0,0 +1,5 @@ +.formWrapper { + svg { + margin: 0; + } +} \ No newline at end of file From 7106b43e30eeb6951fc2421b26b63d8987d3ebdb Mon Sep 17 00:00:00 2001 From: srgooglo Date: Fri, 13 May 2022 21:47:27 +0200 Subject: [PATCH 10/17] remove login from pages --- packages/app/src/pages/login/index.jsx | 143 ------------------------ packages/app/src/pages/login/index.less | 55 --------- 2 files changed, 198 deletions(-) delete mode 100644 packages/app/src/pages/login/index.jsx delete mode 100644 packages/app/src/pages/login/index.less diff --git a/packages/app/src/pages/login/index.jsx b/packages/app/src/pages/login/index.jsx deleted file mode 100644 index 79f9f7c1..00000000 --- a/packages/app/src/pages/login/index.jsx +++ /dev/null @@ -1,143 +0,0 @@ -import React from "react" -import * as antd from "antd" -import { FormGenerator } from "components" -import { Icons } from "components/Icons" - -import config from "config" - -import "./index.less" - -const formInstance = [ - { - id: "username", - element: { - component: "Input", - icon: "User", - placeholder: "Username", - props: { - autoCorrect: "off", - autoCapitalize: "none", - className: "login-form-username", - }, - }, - item: { - hasFeedback: true, - rules: [ - { - required: true, - message: 'Please input your Username!', - }, - ], - } - }, - { - id: "password", - element: { - component: "Input", - icon: "Lock", - placeholder: "Password", - props: { - type: "password" - } - }, - item: { - hasFeedback: true, - rules: [ - { - required: true, - message: 'Please input your Password!', - }, - ], - } - }, - { - id: "login_btn", - withValidation: true, - element: { - component: "Button", - props: { - icon: "User", - children: "Login", - type: "primary", - htmlType: "submit" - } - } - }, -] - -export default class Login extends React.Component { - static pageStatement = { - bottomBarAllowed: false - } - - handleFinish = async (values, ctx) => { - ctx.toogleValidation(true) - - const payload = { - username: values.username, - password: values.password, - allowRegenerate: values.allowRegenerate, - } - - this.props.sessionController.login(payload, (error, response) => { - ctx.toogleValidation(false) - ctx.clearErrors() - - if (error) { - ctx.shake("all") - return ctx.error("result", error) - } else { - if (response.status === 200) { - this.onDone() - } - } - }) - } - - onDone = () => { - if (typeof this.props.onDone === "function") { - this.props.onDone() - } - } - - componentWillUnmount() { - window.app.SidebarController.toogleVisible(true) - window.app.HeaderController.toogleVisible(true) - } - - componentDidMount() { - const sidebarVisible = window.app.SidebarController.isVisible() - const headerVisible = window.app.HeaderController.isVisible() - - if (sidebarVisible) { - window.app.SidebarController.toogleVisible(false) - } - - if (headerVisible) { - window.app.HeaderController.toogleVisible(false) - } - } - - render() { - return ( -
- {this.props.session &&
-

You already have a valid session.

-
- @{this.props.session.username} -
- window.app.setLocation(config.app?.mainPath ?? "/main")} >Go to main -
} -
- -
-
- ) - } -} \ No newline at end of file diff --git a/packages/app/src/pages/login/index.less b/packages/app/src/pages/login/index.less deleted file mode 100644 index 30f1dad9..00000000 --- a/packages/app/src/pages/login/index.less +++ /dev/null @@ -1,55 +0,0 @@ -.app_login { - height: 100vh; - width: 100vw; - - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - - > div { - margin-bottom: 20px; - } -} - -.login-form { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; -} - -.login-form-username { - font-size: 20px!important; - - input { - padding: 20px!important; - font-size: 20px!important; - } -} - -.session_available { - width: fit-content; - height: fit-content; - - padding: 20px; - - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - - border: 1px solid #e5e5e5; - border-radius: 8px; - - .session_card { - width: fit-content; - height: fit-content; - - margin: 10px; - padding: 5px 10px; - - border: 1px solid #e5e5e5; - border-radius: 8px; - } -} From 1f2831e47ac2c2ec3c2f4d627784d082c989992e Mon Sep 17 00:00:00 2001 From: srgooglo Date: Fri, 13 May 2022 21:47:57 +0200 Subject: [PATCH 11/17] added `app.createLogin` & `app.logout` handlers --- packages/app/src/App.jsx | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/packages/app/src/App.jsx b/packages/app/src/App.jsx index 8528afcf..82f08f22 100644 --- a/packages/app/src/App.jsx +++ b/packages/app/src/App.jsx @@ -53,7 +53,7 @@ import { Translation } from "react-i18next" import { Session, User } from "models" import config from "config" -import { NotFound, RenderError, Crash, Settings, Navigation } from "components" +import { NotFound, RenderError, Crash, Settings, Navigation, Login } from "components" import { Icons } from "components/Icons" import Layout from "./layout" @@ -62,7 +62,16 @@ import * as Render from "extensions/render.extension.jsx" import "theme/index.less" class App extends React.Component { - //static debugMode = true + //static debugMode = true // this will enable debug mode of evite app (dah...) + + sessionController = new Session() + + userController = new User() + + state = { + session: null, + user: null, + } loadingMessage = false @@ -71,6 +80,16 @@ class App extends React.Component { } static eventsHandlers = { + "app.createLogin": async function () { + app.DrawerController.open("login", Login, { + componentProps: { + sessionController: this.sessionController + } + }) + }, + "session.logout": async function () { + await this.sessionController.logout() + }, "new_session": async function () { await this.flushState() await this.initialization() @@ -85,11 +104,12 @@ class App extends React.Component { this.eventBus.emit("forceToLogin") }, "forceToLogin": function () { - if (window.location.pathname !== "/login") { - this.beforeLoginLocation = window.location.pathname - } + // if (window.location.pathname !== "/login") { + // this.beforeLoginLocation = window.location.pathname + // } - window.app.setLocation("/login") + // window.app.setLocation("/login") + app.eventBus.emit("app.createLogin") }, "invalid_session": async function (error) { await this.sessionController.forgetLocalSession() @@ -246,13 +266,6 @@ class App extends React.Component { } } - sessionController = new Session() - userController = new User() - state = { - session: null, - user: null, - } - flushState = async () => { await this.setState({ session: null, user: null }) } From 4e56b2af76cc9f1a18d2af49422408b1636f7d63 Mon Sep 17 00:00:00 2001 From: srgooglo Date: Fri, 13 May 2022 21:48:06 +0200 Subject: [PATCH 12/17] added `Login` component --- packages/app/src/components/Login/index.jsx | 132 +++++++++++++++++++ packages/app/src/components/Login/index.less | 63 +++++++++ packages/app/src/components/index.js | 1 + 3 files changed, 196 insertions(+) create mode 100644 packages/app/src/components/Login/index.jsx create mode 100644 packages/app/src/components/Login/index.less diff --git a/packages/app/src/components/Login/index.jsx b/packages/app/src/components/Login/index.jsx new file mode 100644 index 00000000..6b8ef895 --- /dev/null +++ b/packages/app/src/components/Login/index.jsx @@ -0,0 +1,132 @@ +import React from "react" +import * as antd from "antd" +import { FormGenerator } from "components" +import { Icons } from "components/Icons" + +import config from "config" + +import "./index.less" + +const formInstance = [ + { + id: "username", + element: { + component: "Input", + icon: "User", + placeholder: "Username", + props: { + autoCorrect: "off", + autoCapitalize: "none", + className: "login-form-username", + }, + }, + item: { + hasFeedback: true, + rules: [ + { + required: true, + message: 'Please input your Username!', + }, + ], + } + }, + { + id: "password", + element: { + component: "Input", + icon: "Lock", + placeholder: "Password", + props: { + type: "password" + } + }, + item: { + hasFeedback: true, + rules: [ + { + required: true, + message: 'Please input your Password!', + }, + ], + } + }, + { + id: "login_btn", + withValidation: true, + element: { + component: "Button", + props: { + icon: "User", + children: "Login", + type: "primary", + htmlType: "submit" + } + } + }, +] + +export default class Login extends React.Component { + static pageStatement = { + bottomBarAllowed: false + } + + handleFinish = async (values, ctx) => { + ctx.toogleValidation(true) + + const payload = { + username: values.username, + password: values.password, + allowRegenerate: values.allowRegenerate, + } + + this.props.sessionController.login(payload, (error, response) => { + ctx.toogleValidation(false) + ctx.clearErrors() + + if (error) { + ctx.shake("all") + return ctx.error("result", error) + } else { + if (response.status === 200) { + this.onDone() + } + } + }) + } + + onDone = () => { + if (typeof this.props.onDone === "function") { + this.props.onDone() + } + + if (typeof this.props.close === "function") { + this.props.close() + } + } + + render() { + return ( +
+
+
+ +
+
+ {this.props.session &&
+

You already have a valid session.

+
+ @{this.props.session.username} +
+ window.app.setLocation(config.app?.mainPath ?? "/main")} >Go to main +
} + +
+ ) + } +} \ No newline at end of file diff --git a/packages/app/src/components/Login/index.less b/packages/app/src/components/Login/index.less new file mode 100644 index 00000000..14d587a4 --- /dev/null +++ b/packages/app/src/components/Login/index.less @@ -0,0 +1,63 @@ +.login { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + > div { + margin-bottom: 20px; + } + + .header { + .logo { + width: 15vw; + + img { + width: 100%; + height: 100%; + } + } + } +} + +.login-form { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.login-form-username { + font-size: 20px!important; + + input { + padding: 20px!important; + font-size: 20px!important; + } +} + +.session_available { + width: fit-content; + height: fit-content; + + padding: 20px; + + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + border: 1px solid #e5e5e5; + border-radius: 8px; + + .session_card { + width: fit-content; + height: fit-content; + + margin: 10px; + padding: 5px 10px; + + border: 1px solid #e5e5e5; + border-radius: 8px; + } +} diff --git a/packages/app/src/components/index.js b/packages/app/src/components/index.js index 5293b63a..dba491bc 100644 --- a/packages/app/src/components/index.js +++ b/packages/app/src/components/index.js @@ -22,6 +22,7 @@ export { default as Skeleton } from "./Skeleton" export { default as Navigation } from "./Navigation" export { default as ImageUploader } from "./ImageUploader" export { default as ImageViewer } from "./ImageViewer" +export { default as Login } from "./Login" // BUTTONS export { default as LikeButton } from "./LikeButton" From 5e23aa1642732ca825cac2ff1988ca3bf395ae83 Mon Sep 17 00:00:00 2001 From: srgooglo Date: Fri, 13 May 2022 21:48:27 +0200 Subject: [PATCH 13/17] bump version --- .corenode | 2 +- package.json | 2 +- packages/app/package.json | 2 +- packages/desktop/package.json | 2 +- packages/server/package.json | 2 +- packages/streaming-server/package.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.corenode b/.corenode index a005c72a..2b0be6b5 100755 --- a/.corenode +++ b/.corenode @@ -1,3 +1,3 @@ { - "version": "0.17.1" + "version": "0.17.2" } diff --git a/package.json b/package.json index c1d50e53..b7385a60 100644 --- a/package.json +++ b/package.json @@ -9,5 +9,5 @@ "dependencies": { "corenode": "^0.28.26" }, - "version": "0.17.1" + "version": "0.17.2" } diff --git a/packages/app/package.json b/packages/app/package.json index 647df6bf..c4adc3a3 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "comty", - "version": "0.17.1", + "version": "0.17.2", "license": "MIT", "scripts": { "dev": "vite", diff --git a/packages/desktop/package.json b/packages/desktop/package.json index 1a828500..98f019db 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,6 +1,6 @@ { "name": "comty-desktop", - "version": "0.17.1", + "version": "0.17.2", "main": "main/index.js", "license": "MIT", "scripts": { diff --git a/packages/server/package.json b/packages/server/package.json index 69bf6e57..d1ce0243 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,6 +1,6 @@ { "name": "@comty/server", - "version": "0.17.1", + "version": "0.17.2", "main": "dist/index.js", "scripts": { "dev": "nodemon --ignore dist/ --exec corenode-node ./src/index.js" diff --git a/packages/streaming-server/package.json b/packages/streaming-server/package.json index fd8576d8..b58ba962 100644 --- a/packages/streaming-server/package.json +++ b/packages/streaming-server/package.json @@ -1,7 +1,7 @@ { "name": "@comty/streaming-server", "author": "RageStudio", - "version": "0.17.1", + "version": "0.17.2", "main": "dist/index.js", "scripts": { "dev": "nodemon --ignore dist/ --exec corenode-node ./src/index.js" From 9def7a31b02ae8db560ba7de7a84e7fc06c6e9f4 Mon Sep 17 00:00:00 2001 From: srgooglo Date: Fri, 13 May 2022 22:09:16 +0200 Subject: [PATCH 14/17] emit `session.logout` --- packages/app/constants/settings/account.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/app/constants/settings/account.jsx b/packages/app/constants/settings/account.jsx index 9e57bb71..760eec89 100644 --- a/packages/app/constants/settings/account.jsx +++ b/packages/app/constants/settings/account.jsx @@ -144,6 +144,6 @@ export default [ "type": "Button", "icon": "LogOut", "title": "Logout", - "emitEvent": "logout", + "emitEvent": "session.logout", } ] \ No newline at end of file From 0b3997c3ccbdc073f645759842da5803d2163996 Mon Sep 17 00:00:00 2001 From: srgooglo Date: Fri, 13 May 2022 22:23:19 +0200 Subject: [PATCH 15/17] fix import --- packages/app/src/pages/users/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/app/src/pages/users/index.jsx b/packages/app/src/pages/users/index.jsx index 503ded1a..0dabab41 100644 --- a/packages/app/src/pages/users/index.jsx +++ b/packages/app/src/pages/users/index.jsx @@ -1,6 +1,6 @@ import React from "react" import * as antd from "antd" -import { Icons } from "components/icons" +import { Icons } from "components/Icons" import { ActionsBar, SelectableList } from "components" import "./index.less" From 992f0ac2599d0295cc228e030a7b9e0633f9581f Mon Sep 17 00:00:00 2001 From: srgooglo Date: Thu, 19 May 2022 20:24:53 +0200 Subject: [PATCH 16/17] use initialize method --- .../app/src/extensions/theme.extension.jsx | 59 ++++++++++--------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/packages/app/src/extensions/theme.extension.jsx b/packages/app/src/extensions/theme.extension.jsx index 913dcce9..78259161 100644 --- a/packages/app/src/extensions/theme.extension.jsx +++ b/packages/app/src/extensions/theme.extension.jsx @@ -31,32 +31,7 @@ export default class ThemeExtension extends Extension { this.resetDefault() }) - let theme = this.getStoragedTheme() - const modifications = this.getStoragedModifications() - const variantKey = this.getStoragedVariant() - - if (!theme) { - // load default theme - theme = this.getDefaultTheme() - } else { - // load URL and initialize theme - } - - // set global theme - this.theme = theme - - // override with static vars - if (theme.staticVars) { - this.update(theme.staticVars) - } - - // override theme with modifications - if (modifications) { - this.update(modifications) - } - - // apply variation - this.applyVariant(variantKey) + await this.initialize() }, ] @@ -64,6 +39,36 @@ export default class ThemeExtension extends Extension { return document.documentElement.style.getPropertyValue("--themeVariant") } + initialize = async () => { + let theme = this.getStoragedTheme() + + const modifications = this.getStoragedModifications() + const variantKey = this.getStoragedVariant() + + if (!theme) { + // load default theme + theme = this.getDefaultTheme() + } else { + // load URL and initialize theme + } + + // set global theme + this.theme = theme + + // override with static vars + if (theme.staticVars) { + this.update(theme.staticVars) + } + + // override theme with modifications + if (modifications) { + this.update(modifications) + } + + // apply variation + this.applyVariant(variantKey) + } + getRootVariables = () => { let attributes = document.documentElement.getAttribute("style").trim().split(";") attributes = attributes.slice(0, (attributes.length - 1)) @@ -108,7 +113,7 @@ export default class ThemeExtension extends Extension { window.app.settings.set("primaryColor", this.theme.staticVars.primaryColor) - return this.init() + this.initialize() } update = (update) => { From 7de4f21222b3e3035b6f40d300e3b6091978dcf9 Mon Sep 17 00:00:00 2001 From: srgooglo Date: Thu, 19 May 2022 20:28:54 +0200 Subject: [PATCH 17/17] remove parentesis --- packages/app/src/components/Login/index.jsx | 40 ++++++++++----------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/packages/app/src/components/Login/index.jsx b/packages/app/src/components/Login/index.jsx index 6b8ef895..ead2d74c 100644 --- a/packages/app/src/components/Login/index.jsx +++ b/packages/app/src/components/Login/index.jsx @@ -105,28 +105,26 @@ export default class Login extends React.Component { } render() { - return ( -
-
-
- -
+ return
+
+
+
- {this.props.session &&
-

You already have a valid session.

-
- @{this.props.session.username} -
- window.app.setLocation(config.app?.mainPath ?? "/main")} >Go to main -
} -
- ) + {this.props.session &&
+

You already have a valid session.

+
+ @{this.props.session.username} +
+ window.app.setLocation(config.app?.mainPath ?? "/main")} >Go to main +
} + +
} } \ No newline at end of file