mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-09 18:44:16 +00:00
135 lines
3.1 KiB
JavaScript
Executable File
135 lines
3.1 KiB
JavaScript
Executable File
import React from "react"
|
|
import { Runtime } from "@ragestudio/vessel"
|
|
import { Helmet } from "react-helmet"
|
|
import * as Sentry from "@sentry/browser"
|
|
import { invoke } from "@tauri-apps/api/tauri"
|
|
import * as antd from "antd"
|
|
|
|
import config from "@config"
|
|
|
|
import AuthManager from "@classes/AuthManager"
|
|
|
|
import DesktopTopBar from "@components/DesktopTopBar"
|
|
|
|
import { ThemeProvider } from "@cores/style/style.core.jsx"
|
|
|
|
import Layout from "./layout"
|
|
import * as Router from "./router"
|
|
|
|
import StaticMethods from "./statics/methods"
|
|
import StaticEvents from "./statics/events"
|
|
import StaticRenders from "./statics/renders"
|
|
|
|
import "@styles/index.less"
|
|
|
|
class ComtyApp extends React.Component {
|
|
// "mierda conocida, mejor que mierda por conocer" - yugel nunca dijo. 2025.
|
|
static publicEvents = StaticEvents
|
|
static publicMethods = StaticMethods
|
|
static staticRenders = StaticRenders
|
|
static splashAwaitEvent = "app.initialization.finish"
|
|
|
|
state = {
|
|
firstInitialized: false,
|
|
}
|
|
|
|
auth = new AuthManager(
|
|
{
|
|
behaviors: {
|
|
onLogin: async () => {
|
|
await this.auth.flush()
|
|
await this.initialization()
|
|
|
|
app.navigation.goMain()
|
|
},
|
|
onLogout: async () => {
|
|
await this.auth.flush()
|
|
|
|
app.navigation.goAuth()
|
|
},
|
|
onInvalidSession: async (error) => {
|
|
app.navigation.goAuth()
|
|
},
|
|
onDisabledAccount: async () => {
|
|
app.navigation.goAuth()
|
|
},
|
|
},
|
|
},
|
|
this.props.runtime,
|
|
)
|
|
|
|
static async initialize() {
|
|
window.app.version = config.package.version
|
|
window.app.confirm = antd.Modal.confirm
|
|
window.app.message = antd.message
|
|
window.app.isCapacitor = IS_MOBILE_HOST
|
|
|
|
if (
|
|
window.app.version !== window.localStorage.getItem("last_version")
|
|
) {
|
|
app.message.info(
|
|
`Comty has been updated to version ${window.app.version}!`,
|
|
)
|
|
window.localStorage.setItem("last_version", window.app.version)
|
|
}
|
|
|
|
if (import.meta.env.VITE_SENTRY_DSN && import.meta.env.PROD) {
|
|
console.log(`Initializing Sentry...`)
|
|
|
|
Sentry.init({
|
|
debug: true,
|
|
dsn: import.meta.env.VITE_SENTRY_DSN,
|
|
release: "comty-web-app",
|
|
})
|
|
}
|
|
|
|
if (window.__TAURI__) {
|
|
window.__TAURI__.invoke = invoke
|
|
}
|
|
}
|
|
|
|
componentDidMount = async () => {
|
|
await this.initialization()
|
|
this.setState({ firstInitialized: true })
|
|
app.cores.sfx.play("splash_out")
|
|
}
|
|
|
|
initialization = async () => {
|
|
app.eventBus.emit("app.initialization.start")
|
|
|
|
await this.auth.initialize()
|
|
|
|
app.eventBus.emit("app.initialization.finish")
|
|
}
|
|
|
|
render() {
|
|
return (
|
|
<React.Fragment>
|
|
<Helmet>
|
|
<title>{config.app.siteName}</title>
|
|
<meta
|
|
name="og:description"
|
|
content={config.app.siteDescription}
|
|
/>
|
|
<meta property="og:title" content={config.app.siteName} />
|
|
</Helmet>
|
|
<Router.InternalRouter>
|
|
<ThemeProvider>
|
|
{window.__TAURI__ && <DesktopTopBar />}
|
|
<Layout
|
|
user={this.auth.user}
|
|
staticRenders={ComtyApp.staticRenders}
|
|
>
|
|
{this.state.firstInitialized && (
|
|
<Router.PageRender />
|
|
)}
|
|
</Layout>
|
|
</ThemeProvider>
|
|
</Router.InternalRouter>
|
|
</React.Fragment>
|
|
)
|
|
}
|
|
}
|
|
|
|
export default new Runtime(ComtyApp)
|