import { Notification, toast } from '@/components/ui' import { generateBackgroundWorkers } from '@/services/background-worker.service' import { getLocalization } from '@/services/localization.service' import { store } from '@/store' import { clearRedisCache } from './languageText.service' import { kickUser } from './identity.service' import { streamSetupMigrate } from './setup.service' import { openDbMigrateLogPanel, dispatchMigrateLog, dispatchMigrateDone } from '@/components/shared/DbMigrateLogPanel' export abstract class UiEvalService { static Init = () => { //console.log('init') } private static translate = ( localizationKey: string, params?: Record, defaultResourceName?: string, ): string => { const { texts, config } = store.getState().abpConfig if (!texts) return localizationKey return getLocalization( texts, defaultResourceName ?? config?.localization?.defaultResourceName, localizationKey, params, ) } private static runWithToast = (asyncFn: () => Promise, toastKey: string) => { asyncFn() toast.push( {UiEvalService.translate(toastKey)} , { placement: 'bottom-end' }, ) } static ApiGenerateBackgroundWorkers = () => { UiEvalService.runWithToast(() => generateBackgroundWorkers(), '::App.BackgroundWorkers.Message') } static ApiClearRedisCache = () => { UiEvalService.runWithToast(() => clearRedisCache(), '::App.ClearRedisCache.Message') } static ApiKickUser = (userId: string, gridRef?: any) => { UiEvalService.runWithToast(async () => { await kickUser(userId) if (gridRef?.current) { gridRef.current.instance().refresh() } }, '::App.KickUser.Message') } /** * Canlı sistemde migration tetikler (SQL Query Manager ve Wizard dosya yöneticisi ortak kullanır). * Yetki sunucu tarafında `App.Setup.Migrate` izniyle doğrulanır. */ static ApiDbMigrate = () => { toast.push( {UiEvalService.translate('::App.DbMigrate.StartMessage')} , { placement: 'bottom-end' }, ) openDbMigrateLogPanel() let failed = false streamSetupMigrate({ onLog: dispatchMigrateLog, onError: (err) => { failed = true toast.push( {UiEvalService.translate('::App.DbMigrate.ErrorMessage')} {`: ${err.message}`} , { placement: 'bottom-end' }, ) }, onFinished: () => { dispatchMigrateDone() if (failed) return toast.push( {UiEvalService.translate('::App.DbMigrate.EndMessage')} , { placement: 'bottom-end' }, ) }, }) } } const _global = (window || global) as any _global.UiEvalService = UiEvalService