feat: 调整项目结构
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
import { app, BrowserWindow } from 'electron'
|
||||
import { setupWindows } from '@main/wins'
|
||||
import started from 'electron-squirrel-startup'
|
||||
import configManager from '@modules/config-service'
|
||||
import logManager from '@modules/logger'
|
||||
import configManager from '@main/service/config-service'
|
||||
import logManager from '@main/service/logger'
|
||||
import { CONFIG_KEYS } from '@common/constants'
|
||||
|
||||
// Handle creating/removing shortcuts on Windows when installing/uninstalling.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { BaseProvider } from "./BaseProvider";
|
||||
|
||||
import OpenAI from "openai";
|
||||
import logManager from "@modules/logger"
|
||||
import logManager from "@main/service/logger"
|
||||
|
||||
|
||||
function _transformChunk(chunk: OpenAI.Chat.Completions.ChatCompletionChunk): UniversalChunk {
|
||||
|
||||
@@ -2,8 +2,8 @@ import type { Provider } from "@common/types"
|
||||
import { OpenAIProvider } from "./OpenAIProvider"
|
||||
import { parseOpenAISetting } from '@common/utils'
|
||||
import { decode } from 'js-base64'
|
||||
import { configManager } from '@modules/config-service'
|
||||
import { logManager } from '@modules/logger'
|
||||
import { configManager } from '@main/service/config-service'
|
||||
import { logManager } from '@main/service/logger'
|
||||
import { CONFIG_KEYS } from "@common/constants"
|
||||
|
||||
const providers = [
|
||||
|
||||
@@ -5,7 +5,7 @@ import { debounce, simpleCloneDeep } from '@common/utils'
|
||||
import * as fs from 'fs'
|
||||
import * as path from 'path'
|
||||
|
||||
import logManager from '@modules/logger'
|
||||
import logManager from '@main/service/logger'
|
||||
|
||||
const DEFAULT_CONFIG: IConfig = {
|
||||
[CONFIG_KEYS.THEME_MODE]: 'system',
|
||||
@@ -2,8 +2,8 @@ import { ipcMain, Menu, type MenuItemConstructorOptions } from 'electron';
|
||||
import { CONFIG_KEYS, IPC_EVENTS } from '@common/constants';
|
||||
import { cloneDeep } from '@common/utils';
|
||||
import { createTranslator } from '@main/utils'
|
||||
import logManager from '@modules/logger'
|
||||
import configManager from '@modules/config-service'
|
||||
import logManager from '@main/service/logger'
|
||||
import configManager from '@main/service/config-service'
|
||||
|
||||
let t: ReturnType<typeof createTranslator> = createTranslator();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { BrowserWindow, ipcMain, nativeTheme } from 'electron'
|
||||
import { configManager } from '@modules/config-service'
|
||||
import { logManager } from '@modules/logger'
|
||||
import { configManager } from '@main/service/config-service'
|
||||
import { logManager } from '@main/service/logger'
|
||||
import { IPC_EVENTS, CONFIG_KEYS } from '@common/constants'
|
||||
|
||||
class ThemeService {
|
||||
@@ -2,10 +2,10 @@ import { Tray, Menu, ipcMain, app } from 'electron'
|
||||
import { createTranslator, createLogo } from '@main/utils'
|
||||
import { CONFIG_KEYS, IPC_EVENTS, WINDOW_NAMES, MAIN_WIN_SIZE } from '@common/constants'
|
||||
|
||||
import logManager from '@modules/logger'
|
||||
import logManager from '@main/service/logger'
|
||||
// TODO: shortcutManager
|
||||
import windowManager from '@modules/window-service'
|
||||
import configManager from '@modules/config-service'
|
||||
import windowManager from '@main/service/window-service'
|
||||
import configManager from '@main/service/config-service'
|
||||
|
||||
let t: ReturnType<typeof createTranslator> = createTranslator();
|
||||
|
||||
@@ -5,9 +5,9 @@ import { BrowserWindow, BrowserWindowConstructorOptions, ipcMain, IpcMainInvokeE
|
||||
import { debounce } from '@common/utils'
|
||||
import { createLogo } from '@main/utils'
|
||||
|
||||
import logManager from '@modules/logger'
|
||||
import configManager from '@modules/config-service'
|
||||
import themeManager from '@modules/theme-service'
|
||||
import logManager from '@main/service/logger'
|
||||
import configManager from '@main/service/config-service'
|
||||
import themeManager from '@main/service/theme-service'
|
||||
import path from 'node:path';
|
||||
|
||||
interface WindowState {
|
||||
@@ -29,7 +29,7 @@ interface SizeOptions {
|
||||
const SHARED_WINDOW_OPTIONS = {
|
||||
titleBarStyle: 'hidden',
|
||||
show: false,
|
||||
title: 'Diona',
|
||||
title: 'NIANXX',
|
||||
darkTheme: themeManager.isDark,
|
||||
backgroundColor: themeManager.isDark ? '#2C2C2C' : '#FFFFFF',
|
||||
webPreferences: {
|
||||
@@ -49,6 +49,8 @@ class WindowService {
|
||||
main: { instance: void 0, isHidden: false, onCreate: [], onClosed: [] },
|
||||
setting: { instance: void 0, isHidden: false, onCreate: [], onClosed: [] },
|
||||
dialog: { instance: void 0, isHidden: false, onCreate: [], onClosed: [] },
|
||||
login: { instance: void 0, isHidden: false, onCreate: [], onClosed: [] },
|
||||
loading: { instance: void 0, isHidden: false, onCreate: [], onClosed: [] },
|
||||
}
|
||||
|
||||
private constructor() {
|
||||
@@ -1,6 +1,6 @@
|
||||
import { CONFIG_KEYS } from '@common/constants'
|
||||
import logManager from '@modules/logger'
|
||||
import configManager from '@modules/config-service'
|
||||
import logManager from '@main/service/logger'
|
||||
import configManager from '@main/service/config-service'
|
||||
import path from 'node:path'
|
||||
|
||||
import en from '@locales/en.json'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { IPC_EVENTS, WINDOW_NAMES } from '@common/constants'
|
||||
import { BrowserWindow, ipcMain } from 'electron'
|
||||
import { windowManager } from '@modules/window-service'
|
||||
import { windowManager } from '@main/service/window-service'
|
||||
|
||||
export function setupDialogWindow() {
|
||||
let dialogWindow: BrowserWindow | void;
|
||||
|
||||
@@ -2,11 +2,11 @@ import type { BrowserWindow } from 'electron'
|
||||
import { ipcMain } from 'electron';
|
||||
import { WINDOW_NAMES, MAIN_WIN_SIZE, IPC_EVENTS, MENU_IDS, CONVERSATION_ITEM_MENU_IDS, CONVERSATION_LIST_MENU_IDS, MESSAGE_ITEM_MENU_IDS, CONFIG_KEYS } from '@common/constants'
|
||||
import { createProvider } from '../providers'
|
||||
import { windowManager } from '@modules/window-service'
|
||||
import { menuManager } from '@modules/menu-service'
|
||||
import { logManager } from '@modules/logger'
|
||||
import { configManager } from '@modules/config-service'
|
||||
import { trayManager } from '@modules/tray-service'
|
||||
import { windowManager } from '@main/service/window-service'
|
||||
import { menuManager } from '@main/service/menu-service'
|
||||
import { logManager } from '@main/service/logger'
|
||||
import { configManager } from '@main/service/config-service'
|
||||
import { trayManager } from '@main/service/tray-service'
|
||||
|
||||
const handleTray = (minimizeToTray: boolean) => {
|
||||
if (minimizeToTray) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { IPC_EVENTS, WINDOW_NAMES } from '@common/constants'
|
||||
import { ipcMain } from 'electron'
|
||||
import { windowManager } from '@modules/window-service'
|
||||
import { windowManager } from '@main/service/window-service'
|
||||
|
||||
export function setupSetttingWindow() {
|
||||
ipcMain.on(`${IPC_EVENTS.OPEN_WINDOW}:${WINDOW_NAMES.SETTING}`, () => {
|
||||
|
||||
@@ -1,18 +1,7 @@
|
||||
import { createRouter, createWebHistory } from "vue-router";
|
||||
import { createRouter, createMemoryHistory } from "vue-router";
|
||||
import Layout from '@renderer/layout/index.vue'
|
||||
|
||||
const routes = [
|
||||
{
|
||||
path: "/login",
|
||||
name: "Login",
|
||||
component: () => import("@renderer/views/login/index.vue"),
|
||||
},
|
||||
{
|
||||
path: "/browser",
|
||||
name: "Browser",
|
||||
component: () => import("@renderer/browser/BrowserLayout.vue"),
|
||||
meta: { requiresAuth: true },
|
||||
},
|
||||
{
|
||||
path: "/",
|
||||
component: Layout,
|
||||
@@ -23,53 +12,12 @@ const routes = [
|
||||
name: "Home",
|
||||
meta: { requiresAuth: true },
|
||||
},
|
||||
{
|
||||
path: "stock",
|
||||
name: "Stock",
|
||||
component: () => import("@renderer/views/stock/index.vue"),
|
||||
meta: { requiresAuth: true },
|
||||
},
|
||||
{
|
||||
path: "rate",
|
||||
name: "Rate",
|
||||
component: () => import("@renderer/views/rate/index.vue"),
|
||||
meta: { requiresAuth: true },
|
||||
},
|
||||
{
|
||||
path: "order",
|
||||
name: "Order",
|
||||
component: () => import("@renderer/views/order/index.vue"),
|
||||
meta: { requiresAuth: true },
|
||||
},
|
||||
{
|
||||
path: "more",
|
||||
name: "More",
|
||||
component: () => import("@renderer/views/more/index.vue"),
|
||||
meta: { requiresAuth: true },
|
||||
},
|
||||
{
|
||||
path: "setting",
|
||||
name: "Setting",
|
||||
component: () => import("@renderer/views/setting/index.vue"),
|
||||
meta: { requiresAuth: true },
|
||||
},
|
||||
{
|
||||
path: "/dashboard",
|
||||
name: "Dashboard",
|
||||
component: () => import("@renderer/views/dashboard/index.vue"),
|
||||
meta: { requiresAuth: true },
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
path: "/about",
|
||||
name: "About",
|
||||
component: () => import("@renderer/views/about/index.vue"),
|
||||
},
|
||||
}
|
||||
];
|
||||
|
||||
const router = createRouter({
|
||||
history: createWebHistory(),
|
||||
history: createMemoryHistory(),
|
||||
routes,
|
||||
scrollBehavior(to: any, from: any, savedPosition: any) {
|
||||
if (savedPosition) {
|
||||
@@ -80,24 +28,24 @@ const router = createRouter({
|
||||
},
|
||||
});
|
||||
|
||||
router.beforeEach((to: any, from: any, next: any) => {
|
||||
const token = localStorage.getItem("token");
|
||||
if (to.meta && (to.meta as any).requiresAuth && !token) {
|
||||
next({ path: "/login" });
|
||||
return;
|
||||
}
|
||||
// router.beforeEach((to: any, from: any, next: any) => {
|
||||
// const token = localStorage.getItem("token");
|
||||
// if (to.meta && (to.meta as any).requiresAuth && !token) {
|
||||
// next({ path: "/login" });
|
||||
// return;
|
||||
// }
|
||||
|
||||
if (token && to.path === "/login") {
|
||||
next({ path: "/home" });
|
||||
return;
|
||||
}
|
||||
// if (token && to.path === "/login") {
|
||||
// next({ path: "/home" });
|
||||
// return;
|
||||
// }
|
||||
|
||||
if (token && to.path === "/") {
|
||||
next({ path: "/home" });
|
||||
return;
|
||||
}
|
||||
// if (token && to.path === "/") {
|
||||
// next({ path: "/home" });
|
||||
// return;
|
||||
// }
|
||||
|
||||
next();
|
||||
});
|
||||
// next();
|
||||
// });
|
||||
|
||||
export default router;
|
||||
|
||||
18
src/renderer/utils/errorHandler.ts
Normal file
18
src/renderer/utils/errorHandler.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import type { Plugin } from 'vue'
|
||||
import logger from './logger'
|
||||
|
||||
export const errorHandler: Plugin = (app) => {
|
||||
app.config.errorHandler = (err, instance, info) => {
|
||||
logger.error('Vue error:', err, instance, info);
|
||||
};
|
||||
|
||||
window.onerror = (message, source, lineno, colno, error) => {
|
||||
logger.error('Window error:', message, source, lineno, colno, error);
|
||||
};
|
||||
|
||||
window.onunhandledrejection = (event) => {
|
||||
logger.error('Unhandled Promise Rejection:', event);
|
||||
};
|
||||
};
|
||||
|
||||
export default errorHandler;
|
||||
15
src/renderer/views/dialog/index.ts
Normal file
15
src/renderer/views/dialog/index.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import '@renderer/styles/index.css'
|
||||
|
||||
import errorHandler from '@utils/errorHandler'
|
||||
import i18n from '@renderer/i18n'
|
||||
import HeaderBar from '@renderer/components/HeaderBar/index.vue'
|
||||
import DragRegion from '@renderer/components/DragRegion/index.vue'
|
||||
|
||||
import Dialog from './index.vue'
|
||||
|
||||
createApp(Dialog)
|
||||
.use(i18n)
|
||||
.use(errorHandler)
|
||||
.component('HeaderBar', HeaderBar)
|
||||
.component('DragRegion', DragRegion)
|
||||
.mount('#app')
|
||||
5
src/renderer/views/dialog/index.vue
Normal file
5
src/renderer/views/dialog/index.vue
Normal file
@@ -0,0 +1,5 @@
|
||||
<template></template>
|
||||
|
||||
<script setup lang="ts">
|
||||
|
||||
</script>
|
||||
16
src/renderer/views/loading/index.ts
Normal file
16
src/renderer/views/loading/index.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import '@renderer/styles/index.css'
|
||||
|
||||
import errorHandler from '@utils/errorHandler'
|
||||
import i18n from '@renderer/i18n'
|
||||
import HeaderBar from '@renderer/components/HeaderBar/index.vue'
|
||||
import DragRegion from '@renderer/components/DragRegion/index.vue'
|
||||
|
||||
import Loading from './index.vue'
|
||||
|
||||
createApp(Loading)
|
||||
.use(i18n)
|
||||
.use(createPinia())
|
||||
.use(errorHandler)
|
||||
.component('HeaderBar', HeaderBar)
|
||||
.component('DragRegion', DragRegion)
|
||||
.mount('#app')
|
||||
5
src/renderer/views/loading/index.vue
Normal file
5
src/renderer/views/loading/index.vue
Normal file
@@ -0,0 +1,5 @@
|
||||
<template></template>
|
||||
|
||||
<script setup lang="ts">
|
||||
|
||||
</script>
|
||||
16
src/renderer/views/login/index.ts
Normal file
16
src/renderer/views/login/index.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import '@renderer/styles/index.css'
|
||||
|
||||
import errorHandler from '@utils/errorHandler'
|
||||
import i18n from '@renderer/i18n'
|
||||
import HeaderBar from '@renderer/components/HeaderBar/index.vue'
|
||||
import DragRegion from '@renderer/components/DragRegion/index.vue'
|
||||
|
||||
import Login from './index.vue'
|
||||
|
||||
createApp(Login)
|
||||
.use(i18n)
|
||||
.use(createPinia())
|
||||
.use(errorHandler)
|
||||
.component('HeaderBar', HeaderBar)
|
||||
.component('DragRegion', DragRegion)
|
||||
.mount('#app')
|
||||
15
src/renderer/views/setting/index.ts
Normal file
15
src/renderer/views/setting/index.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import '@renderer/styles/index.css'
|
||||
|
||||
import errorHandler from '@renderer/utils/errorHandler'
|
||||
import i18n from '@renderer/i18n'
|
||||
import HeaderBar from '@renderer/components/HeaderBar/index.vue'
|
||||
import DragRegion from '@renderer/components/DragRegion/index.vue'
|
||||
|
||||
import Setting from './index.vue'
|
||||
|
||||
createApp(Setting)
|
||||
.use(i18n)
|
||||
.use(errorHandler)
|
||||
.component('HeaderBar', HeaderBar)
|
||||
.component('DragRegion', DragRegion)
|
||||
.mount('#app')
|
||||
Reference in New Issue
Block a user