fix: 修复不稳定的更新状态和错误的 preset (#985)
Reviewed-on: daoyoucloud/tachybase#985
This commit is contained in:
		
							parent
							
								
									b46c9ee827
								
							
						
					
					
						commit
						f08c5b6332
					
				@ -52,6 +52,7 @@
 | 
				
			|||||||
    "@tachybase/build": "workspace:*",
 | 
					    "@tachybase/build": "workspace:*",
 | 
				
			||||||
    "@tachybase/cli": "workspace:*",
 | 
					    "@tachybase/cli": "workspace:*",
 | 
				
			||||||
    "@tachybase/preset-hera-rental": "workspace:*",
 | 
					    "@tachybase/preset-hera-rental": "workspace:*",
 | 
				
			||||||
 | 
					    "@tachybase/preset-hera-sancongtou": "workspace:*",
 | 
				
			||||||
    "@tachybase/preset-tachybase": "workspace:*",
 | 
					    "@tachybase/preset-tachybase": "workspace:*",
 | 
				
			||||||
    "@tachybase/test": "workspace:*",
 | 
					    "@tachybase/test": "workspace:*",
 | 
				
			||||||
    "@types/react": "^18.2.79",
 | 
					    "@types/react": "^18.2.79",
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@
 | 
				
			|||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "@tachybase/database": "workspace:*",
 | 
					    "@tachybase/database": "workspace:*",
 | 
				
			||||||
    "@tachybase/preset-hera-rental": "workspace:*",
 | 
					    "@tachybase/preset-hera-rental": "workspace:*",
 | 
				
			||||||
    "@tachybase/preset-sancongtou": "workspace:*",
 | 
					    "@tachybase/preset-hera-sancongtou": "workspace:*",
 | 
				
			||||||
    "@tachybase/preset-tachybase": "workspace:*",
 | 
					    "@tachybase/preset-tachybase": "workspace:*",
 | 
				
			||||||
    "@tachybase/server": "workspace:*"
 | 
					    "@tachybase/server": "workspace:*"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
import { CleanOptions, Collection, SyncOptions } from '@tachybase/database';
 | 
					import { CleanOptions, Collection, SyncOptions } from '@tachybase/database';
 | 
				
			||||||
import { importModule, isURL } from '@tachybase/utils';
 | 
					import { Container, importModule, isURL } from '@tachybase/utils';
 | 
				
			||||||
import { fsExists } from '@tachybase/utils/plugin-symlink';
 | 
					import { fsExists } from '@tachybase/utils/plugin-symlink';
 | 
				
			||||||
import execa from 'execa';
 | 
					import execa from 'execa';
 | 
				
			||||||
import fg from 'fast-glob';
 | 
					import fg from 'fast-glob';
 | 
				
			||||||
@ -381,6 +381,10 @@ export class PluginManager {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  async load(options: any = {}) {
 | 
					  async load(options: any = {}) {
 | 
				
			||||||
 | 
					    // FIXME
 | 
				
			||||||
 | 
					    Container.reset();
 | 
				
			||||||
 | 
					    Container.set({ id: 'db', value: this.app.db });
 | 
				
			||||||
 | 
					    Container.set({ id: 'app', value: this.app });
 | 
				
			||||||
    this.app.setMaintainingMessage('loading plugins...');
 | 
					    this.app.setMaintainingMessage('loading plugins...');
 | 
				
			||||||
    const total = this.pluginInstances.size;
 | 
					    const total = this.pluginInstances.size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -32,16 +32,12 @@ export class PluginCoreServer extends Plugin {
 | 
				
			|||||||
  async load() {
 | 
					  async load() {
 | 
				
			||||||
    await this.pluginDepartments.load();
 | 
					    await this.pluginDepartments.load();
 | 
				
			||||||
    await this.pluginInterception.load();
 | 
					    await this.pluginInterception.load();
 | 
				
			||||||
    Container.reset();
 | 
					 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      Container.set({ id: 'db', value: this.db });
 | 
					 | 
				
			||||||
      Container.set({ id: 'app', value: this.app });
 | 
					 | 
				
			||||||
      await Container.get(ConnectionManager).load();
 | 
					      await Container.get(ConnectionManager).load();
 | 
				
			||||||
      const fontManger = Container.get(FontManager);
 | 
					      const fontManger = Container.get(FontManager);
 | 
				
			||||||
      const sqlLoader = Container.get(SqlLoader);
 | 
					      const sqlLoader = Container.get(SqlLoader);
 | 
				
			||||||
      await sqlLoader.loadSqlFiles(path.join(__dirname, './sqls'));
 | 
					      await sqlLoader.loadSqlFiles(path.join(__dirname, './sqls'));
 | 
				
			||||||
      await fontManger.loadFonts();
 | 
					      await fontManger.loadFonts();
 | 
				
			||||||
      await Container.get(HomePageService).load();
 | 
					 | 
				
			||||||
      // init web controllers
 | 
					      // init web controllers
 | 
				
			||||||
      await Container.get(WebService).load();
 | 
					      await Container.get(WebService).load();
 | 
				
			||||||
      this.app.acl.allow('link-manage', 'init', 'public');
 | 
					      this.app.acl.allow('link-manage', 'init', 'public');
 | 
				
			||||||
@ -52,6 +48,7 @@ export class PluginCoreServer extends Plugin {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
  async install(options?: InstallOptions) {
 | 
					  async install(options?: InstallOptions) {
 | 
				
			||||||
    await this.pluginDepartments.install(options);
 | 
					    await this.pluginDepartments.install(options);
 | 
				
			||||||
 | 
					    await Container.get(HomePageService).install();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  async afterEnable() {}
 | 
					  async afterEnable() {}
 | 
				
			||||||
  async afterDisable() {}
 | 
					  async afterDisable() {}
 | 
				
			||||||
 | 
				
			|||||||
@ -20,7 +20,7 @@ export class ConnectionManager {
 | 
				
			|||||||
  async unload() {
 | 
					  async unload() {
 | 
				
			||||||
    for (const client of [this.redisClient, this.redisPubClient, this.redisSubClient]) {
 | 
					    for (const client of [this.redisClient, this.redisPubClient, this.redisSubClient]) {
 | 
				
			||||||
      if (client.isOpen) {
 | 
					      if (client.isOpen) {
 | 
				
			||||||
        await this.redisClient.disconnect();
 | 
					        await client.disconnect();
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -32,6 +32,9 @@ export class ConnectionManager {
 | 
				
			|||||||
    await this.redisClient.connect();
 | 
					    await this.redisClient.connect();
 | 
				
			||||||
    await this.redisPubClient.connect();
 | 
					    await this.redisPubClient.connect();
 | 
				
			||||||
    await this.redisSubClient.connect();
 | 
					    await this.redisSubClient.connect();
 | 
				
			||||||
 | 
					    this.app.on('afterStop', () => {
 | 
				
			||||||
 | 
					      this.unload();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
    if (isMain()) {
 | 
					    if (isMain()) {
 | 
				
			||||||
      const keysToDelete: any = await this.redisClient.KEYS(`${KEY_ONLINE_USERS}*`);
 | 
					      const keysToDelete: any = await this.redisClient.KEYS(`${KEY_ONLINE_USERS}*`);
 | 
				
			||||||
      if (keysToDelete.length > 0) {
 | 
					      if (keysToDelete.length > 0) {
 | 
				
			||||||
 | 
				
			|||||||
@ -10,7 +10,7 @@ export class HomePageService {
 | 
				
			|||||||
  @Db()
 | 
					  @Db()
 | 
				
			||||||
  private db: Database;
 | 
					  private db: Database;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  async load() {
 | 
					  async install() {
 | 
				
			||||||
    this.app.acl.allow('home_page_presentations', 'list', 'public');
 | 
					    this.app.acl.allow('home_page_presentations', 'list', 'public');
 | 
				
			||||||
    const repo = this.db.getRepository<any>('collections');
 | 
					    const repo = this.db.getRepository<any>('collections');
 | 
				
			||||||
    if (repo) {
 | 
					    if (repo) {
 | 
				
			||||||
 | 
				
			|||||||
@ -2,11 +2,17 @@ import PresetTachyBase from '@tachybase/preset-tachybase';
 | 
				
			|||||||
import _ from 'lodash';
 | 
					import _ from 'lodash';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class PluginRental extends PresetTachyBase {
 | 
					export class PluginRental extends PresetTachyBase {
 | 
				
			||||||
  #builtInPlugins = ['approval-mobile', 'core', 'rental', 'mobile-client'];
 | 
					  #builtInPlugins = ['approval-mobile', 'core'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  get builtInPlugins() {
 | 
					  get builtInPlugins() {
 | 
				
			||||||
    return super.builtInPlugins.concat(this.#builtInPlugins);
 | 
					    return super.builtInPlugins.concat(this.#builtInPlugins);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  #localPlugins = ['rental>=0.21.0'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  get localPlugins() {
 | 
				
			||||||
 | 
					    return super.localPlugins.concat(this.#localPlugins);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default PresetTachyBase;
 | 
					export default PluginRental;
 | 
				
			||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "@tachybase/preset-sancongtou",
 | 
					  "name": "@tachybase/preset-hera-sancongtou",
 | 
				
			||||||
  "version": "0.21.20",
 | 
					  "version": "0.21.20",
 | 
				
			||||||
  "license": "Apache-2.0",
 | 
					  "license": "Apache-2.0",
 | 
				
			||||||
  "main": "./lib/server/index.js",
 | 
					  "main": "./lib/server/index.js",
 | 
				
			||||||
 | 
				
			|||||||
@ -1,12 +1,18 @@
 | 
				
			|||||||
import PresetTachyBase from '@tachybase/preset-tachybase';
 | 
					import PresetTachyBase from '@tachybase/preset-tachybase';
 | 
				
			||||||
import _ from 'lodash';
 | 
					import _ from 'lodash';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class PluginRental extends PresetTachyBase {
 | 
					export class PluginSancongtou extends PresetTachyBase {
 | 
				
			||||||
  #builtInPlugins = ['approval-mobile', 'core', 'rental', 'mobile-client', 'sancongtou'];
 | 
					  #builtInPlugins = ['approval-mobile', 'core'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  get builtInPlugins() {
 | 
					  get builtInPlugins() {
 | 
				
			||||||
    return super.builtInPlugins.concat(this.#builtInPlugins);
 | 
					    return super.builtInPlugins.concat(this.#builtInPlugins);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  #localPlugins = ['sancongtou>=0.21.0'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  get localPlugins() {
 | 
				
			||||||
 | 
					    return super.localPlugins.concat(this.#localPlugins);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default PresetTachyBase;
 | 
					export default PluginSancongtou;
 | 
				
			||||||
 | 
				
			|||||||
@ -51,7 +51,10 @@ importers:
 | 
				
			|||||||
        version: link:packages/core/cli
 | 
					        version: link:packages/core/cli
 | 
				
			||||||
      '@tachybase/preset-hera-rental':
 | 
					      '@tachybase/preset-hera-rental':
 | 
				
			||||||
        specifier: workspace:*
 | 
					        specifier: workspace:*
 | 
				
			||||||
        version: link:packages/presets/hera-rental
 | 
					        version: link:packages/presets/rental
 | 
				
			||||||
 | 
					      '@tachybase/preset-hera-sancongtou':
 | 
				
			||||||
 | 
					        specifier: workspace:*
 | 
				
			||||||
 | 
					        version: link:packages/presets/sancongtou
 | 
				
			||||||
      '@tachybase/preset-tachybase':
 | 
					      '@tachybase/preset-tachybase':
 | 
				
			||||||
        specifier: workspace:*
 | 
					        specifier: workspace:*
 | 
				
			||||||
        version: link:packages/presets/base
 | 
					        version: link:packages/presets/base
 | 
				
			||||||
@ -169,8 +172,8 @@ importers:
 | 
				
			|||||||
        version: link:../database
 | 
					        version: link:../database
 | 
				
			||||||
      '@tachybase/preset-hera-rental':
 | 
					      '@tachybase/preset-hera-rental':
 | 
				
			||||||
        specifier: workspace:*
 | 
					        specifier: workspace:*
 | 
				
			||||||
        version: link:../../presets/hera-rental
 | 
					        version: link:../../presets/rental
 | 
				
			||||||
      '@tachybase/preset-sancongtou':
 | 
					      '@tachybase/preset-hera-sancongtou':
 | 
				
			||||||
        specifier: workspace:*
 | 
					        specifier: workspace:*
 | 
				
			||||||
        version: link:../../presets/sancongtou
 | 
					        version: link:../../presets/sancongtou
 | 
				
			||||||
      '@tachybase/preset-tachybase':
 | 
					      '@tachybase/preset-tachybase':
 | 
				
			||||||
@ -4174,7 +4177,7 @@ importers:
 | 
				
			|||||||
        specifier: ^4.17.0
 | 
					        specifier: ^4.17.0
 | 
				
			||||||
        version: 4.17.0
 | 
					        version: 4.17.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  packages/presets/hera-rental:
 | 
					  packages/presets/rental:
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      '@hera/plugin-approval':
 | 
					      '@hera/plugin-approval':
 | 
				
			||||||
        specifier: workspace:*
 | 
					        specifier: workspace:*
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user