mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2024-11-21 09:36:35 +00:00
feat: add migrateOneBotConfigsV2
This commit is contained in:
parent
609e83a824
commit
4271acc6ab
@ -48,7 +48,6 @@ import {
|
||||
WebsocketServerConfig,
|
||||
NetworkConfig,
|
||||
OneBotConfig,
|
||||
defaultOneBotConfigs,
|
||||
mergeOneBotConfigs,
|
||||
} from '../../../src/onebot/config/config';
|
||||
import { QQLoginManager } from '@/backend/shell';
|
||||
@ -89,6 +88,7 @@ interface ClientPanel {
|
||||
|
||||
type ComponentKey = keyof typeof componentMap;
|
||||
|
||||
// TODO: store these state in global store (aka pinia)
|
||||
const activeTab = ref<number>(0);
|
||||
const isDialogVisible = ref(false);
|
||||
const newTab = ref<{ name: string; type: ComponentKey }>({ name: '', type: 'httpServers' });
|
||||
@ -151,7 +151,7 @@ const loadConfig = async () => {
|
||||
try {
|
||||
const userConfig = await getOB11Config();
|
||||
if (!userConfig) return;
|
||||
const mergedConfig = mergeOneBotConfigs(defaultOneBotConfigs, userConfig);
|
||||
const mergedConfig = mergeOneBotConfigs(userConfig);
|
||||
addConfigDataToPanel(mergedConfig.network);
|
||||
} catch (error) {
|
||||
console.error('Error loading config:', error);
|
||||
|
@ -7,7 +7,7 @@
|
||||
"build:framework": "npm run build:webui && vite build --mode framework",
|
||||
"build:shell": "npm run build:webui && vite build --mode shell",
|
||||
"build:webui": "cd napcat.webui && vite build",
|
||||
"lint": "eslint --fix src/**/*.{js,ts}",
|
||||
"lint": "eslint --fix src/**/*.{js,ts,vue}",
|
||||
"depend": "cd dist && npm install --omit=dev"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
@ -1,3 +1,31 @@
|
||||
interface v1Config {
|
||||
http: {
|
||||
enable: boolean;
|
||||
host: string;
|
||||
port: number;
|
||||
secret: string;
|
||||
enableHeart: boolean;
|
||||
enablePost: boolean;
|
||||
postUrls: string[];
|
||||
};
|
||||
ws: {
|
||||
enable: boolean;
|
||||
host: string;
|
||||
port: number;
|
||||
};
|
||||
reverseWs: {
|
||||
enable: boolean;
|
||||
urls: string[];
|
||||
};
|
||||
debug: boolean;
|
||||
heartInterval: number;
|
||||
messagePostFormat: string;
|
||||
enableLocalFile2Url: boolean;
|
||||
musicSignUrl: string;
|
||||
reportSelfMessage: boolean;
|
||||
token: string;
|
||||
}
|
||||
|
||||
export interface AdapterConfig {
|
||||
name: string;
|
||||
enable: boolean;
|
||||
@ -8,7 +36,7 @@ const createDefaultAdapterConfig = <T extends AdapterConfig>(config: T): T => co
|
||||
|
||||
export const httpServerDefaultConfigs = createDefaultAdapterConfig({
|
||||
name: 'http-server',
|
||||
enable: false,
|
||||
enable: false as boolean,
|
||||
port: 3000,
|
||||
host: '0.0.0.0',
|
||||
enableCors: true,
|
||||
@ -22,7 +50,7 @@ export type HttpServerConfig = typeof httpServerDefaultConfigs;
|
||||
|
||||
export const httpClientDefaultConfigs = createDefaultAdapterConfig({
|
||||
name: 'http-client',
|
||||
enable: false,
|
||||
enable: false as boolean,
|
||||
url: 'http://localhost:8080',
|
||||
messagePostFormat: 'array',
|
||||
reportSelfMessage: false,
|
||||
@ -33,7 +61,7 @@ export type HttpClientConfig = typeof httpClientDefaultConfigs;
|
||||
|
||||
export const websocketServerDefaultConfigs = createDefaultAdapterConfig({
|
||||
name: 'websocket-server',
|
||||
enable: false,
|
||||
enable: false as boolean,
|
||||
host: '0.0.0.0',
|
||||
port: 3002,
|
||||
messagePostFormat: 'array',
|
||||
@ -47,7 +75,7 @@ export type WebsocketServerConfig = typeof websocketServerDefaultConfigs;
|
||||
|
||||
export const websocketClientDefaultConfigs = createDefaultAdapterConfig({
|
||||
name: 'websocket-client',
|
||||
enable: false,
|
||||
enable: false as boolean,
|
||||
url: 'ws://localhost:8082',
|
||||
messagePostFormat: 'array',
|
||||
reportSelfMessage: false,
|
||||
@ -97,7 +125,10 @@ export const mergeNetworkDefaultConfig = {
|
||||
type NetworkConfigKeys = keyof typeof mergeNetworkDefaultConfig;
|
||||
|
||||
// TODO: wrong type hint in userConfig (aka old userConfig)
|
||||
export function mergeOneBotConfigs(defaultConfig: OneBotConfig, userConfig: Partial<OneBotConfig>): OneBotConfig {
|
||||
export function mergeOneBotConfigs(
|
||||
userConfig: Partial<OneBotConfig>,
|
||||
defaultConfig: OneBotConfig = defaultOneBotConfigs
|
||||
): OneBotConfig {
|
||||
const mergedConfig = { ...defaultConfig };
|
||||
|
||||
if (userConfig.network) {
|
||||
@ -117,3 +148,58 @@ export function mergeOneBotConfigs(defaultConfig: OneBotConfig, userConfig: Part
|
||||
}
|
||||
return mergedConfig;
|
||||
}
|
||||
|
||||
export function migrateOneBotConfigsV1(
|
||||
v1Config: Partial<v1Config>,
|
||||
defaultConfig: OneBotConfig = defaultOneBotConfigs
|
||||
): OneBotConfig {
|
||||
const mergedConfig = { ...defaultConfig };
|
||||
if (v1Config.http) {
|
||||
mergedConfig.network.httpServers = [
|
||||
mergeConfigs(httpServerDefaultConfigs, {
|
||||
enable: v1Config.http.enable,
|
||||
port: v1Config.http.port,
|
||||
host: v1Config.http.host,
|
||||
token: v1Config.http.secret,
|
||||
debug: v1Config.debug,
|
||||
messagePostFormat: v1Config.messagePostFormat,
|
||||
reportSelfMessage: v1Config.reportSelfMessage,
|
||||
}),
|
||||
];
|
||||
}
|
||||
if (v1Config.ws) {
|
||||
mergedConfig.network.websocketServers = [
|
||||
mergeConfigs(websocketServerDefaultConfigs, {
|
||||
enable: v1Config.ws.enable,
|
||||
port: v1Config.ws.port,
|
||||
host: v1Config.ws.host,
|
||||
token: v1Config.token,
|
||||
debug: v1Config.debug,
|
||||
messagePostFormat: v1Config.messagePostFormat,
|
||||
reportSelfMessage: v1Config.reportSelfMessage,
|
||||
}),
|
||||
];
|
||||
}
|
||||
if (v1Config.reverseWs) {
|
||||
mergedConfig.network.websocketClients = v1Config.reverseWs.urls.map((url) =>
|
||||
mergeConfigs(websocketClientDefaultConfigs, {
|
||||
enable: v1Config.reverseWs?.enable,
|
||||
url: url,
|
||||
token: v1Config.token,
|
||||
debug: v1Config.debug,
|
||||
messagePostFormat: v1Config.messagePostFormat,
|
||||
reportSelfMessage: v1Config.reportSelfMessage,
|
||||
})
|
||||
);
|
||||
}
|
||||
if (v1Config.heartInterval) {
|
||||
mergedConfig.network.websocketServers[0].heartInterval = v1Config.heartInterval;
|
||||
}
|
||||
if (v1Config.musicSignUrl) {
|
||||
mergedConfig.musicSignUrl = v1Config.musicSignUrl;
|
||||
}
|
||||
if (v1Config.enableLocalFile2Url) {
|
||||
mergedConfig.enableLocalFile2Url = v1Config.enableLocalFile2Url;
|
||||
}
|
||||
return mergedConfig;
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ import { OB11GroupRecallNoticeEvent } from '@/onebot/event/notice/OB11GroupRecal
|
||||
import { LRUCache } from '@/common/lru-cache';
|
||||
import { NodeIKernelRecentContactListener } from '@/core/listeners/NodeIKernelRecentContactListener';
|
||||
import { BotOfflineEvent } from './event/notice/BotOfflineEvent';
|
||||
import { defaultOneBotConfigs, mergeOneBotConfigs, OneBotConfig } from './config/config';
|
||||
import { mergeOneBotConfigs, migrateOneBotConfigsV1, OneBotConfig } from './config/config';
|
||||
import { OB11Message } from './types';
|
||||
|
||||
//OneBot实现类
|
||||
@ -64,7 +64,7 @@ export class NapCatOneBot11Adapter {
|
||||
this.core = core;
|
||||
this.context = context;
|
||||
this.configLoader = new OB11ConfigLoader(core, pathWrapper.configPath);
|
||||
this.configLoader.save(mergeOneBotConfigs(defaultOneBotConfigs, this.configLoader.configData));
|
||||
this.configLoader.save(mergeOneBotConfigs(migrateOneBotConfigsV1(this.configLoader.configData)));
|
||||
this.apis = {
|
||||
GroupApi: new OneBotGroupApi(this, core),
|
||||
UserApi: new OneBotUserApi(this, core),
|
||||
|
Loading…
x
Reference in New Issue
Block a user