User groups
@@ -1301,8 +1304,8 @@ class HomePageComponent extends React.Component {
this.props.appType === 'workflow'
? 'homePage.deleteWorkflowAndData'
: this.props.appType === 'front-end'
- ? 'homePage.deleteAppAndData'
- : deleteModuleText,
+ ? 'homePage.deleteAppAndData'
+ : deleteModuleText,
{
appName: appToBeDeleted?.name,
}
@@ -1567,10 +1570,11 @@ class HomePageComponent extends React.Component {
{this.props.appType === 'module'
? 'Create new module'
: this.props.t(
- `${this.props.appType === 'workflow' ? 'workflowsDashboard' : 'homePage'
- }.header.createNewApplication`,
- 'Create new app'
- )}
+ `${
+ this.props.appType === 'workflow' ? 'workflowsDashboard' : 'homePage'
+ }.header.createNewApplication`,
+ 'Create new app'
+ )}
>
= workflowInstanceLevelLimit.total ||
- 100 > workflowInstanceLevelLimit.percentage >= 90 ||
- workflowInstanceLevelLimit.current === workflowInstanceLevelLimit.total - 1
+ 100 > workflowInstanceLevelLimit.percentage >= 90 ||
+ workflowInstanceLevelLimit.current === workflowInstanceLevelLimit.total - 1
? workflowInstanceLevelLimit
: workflowWorkspaceLevelLimit
}
@@ -1726,8 +1730,8 @@ class HomePageComponent extends React.Component {
appType={this.props.appType}
workflowsLimit={
workflowInstanceLevelLimit.current >= workflowInstanceLevelLimit.total ||
- 100 > workflowInstanceLevelLimit.percentage >= 90 ||
- workflowInstanceLevelLimit.current === workflowInstanceLevelLimit.total - 1
+ 100 > workflowInstanceLevelLimit.percentage >= 90 ||
+ workflowInstanceLevelLimit.current === workflowInstanceLevelLimit.total - 1
? workflowInstanceLevelLimit
: workflowWorkspaceLevelLimit
}
diff --git a/frontend/src/modules/common/components/BaseImportAppMenu/BaseImportAppMenu.jsx b/frontend/src/modules/common/components/BaseImportAppMenu/BaseImportAppMenu.jsx
index 85a6c25b8d..4808ca46b5 100644
--- a/frontend/src/modules/common/components/BaseImportAppMenu/BaseImportAppMenu.jsx
+++ b/frontend/src/modules/common/components/BaseImportAppMenu/BaseImportAppMenu.jsx
@@ -17,7 +17,7 @@ const BaseImportAppMenu = ({
const { t } = useTranslation();
return (
- {appType !== 'wzorkflow' && appType !== 'module' && (
+ {appType !== 'workflow' && appType !== 'module' && (
{
+ const schedules = await manager
+ .createQueryBuilder(WorkflowSchedule, 'workflowSchedule')
+ .innerJoinAndSelect('workflowSchedule.workflow', 'appVersion')
+ .where('appVersion.appId = :appId', { appId: id })
+ .getMany();
+
+ // Emit event with schedule IDs for temporal schedule cleanup
+ if (schedules.length > 0) {
+ const scheduleIds = schedules.map((schedule) => schedule.id);
+ this.eventEmitter.emit('app.deleted', {
+ appId: id,
+ scheduleIds: scheduleIds,
+ });
+ }
+
+ await manager.delete(App, { id, organizationId });
+ });
//APP_DELETE audit
RequestContext.setLocals(AUDIT_LOGS_REQUEST_CONTEXT_KEY, {
diff --git a/server/src/modules/auth/util.service.ts b/server/src/modules/auth/util.service.ts
index db01ee4c0e..ef708cbc6e 100644
--- a/server/src/modules/auth/util.service.ts
+++ b/server/src/modules/auth/util.service.ts
@@ -7,7 +7,7 @@ import { LicenseUserService } from '@modules/licensing/services/user.service';
import { RolesUtilService } from '@modules/roles/util.service';
import { OrganizationUser } from '../../entities/organization_user.entity';
import { generateNextNameAndSlug } from 'src/helpers/utils.helper';
-const uuid = require('uuid');
+import * as uuid from 'uuid';
import { Organization } from '../../entities/organization.entity';
import { EntityManager } from 'typeorm';
import {
@@ -121,7 +121,7 @@ export class AuthUtilService implements IAuthUtilService {
try {
const signedJwt = this.sessionUtilService.verifyToken(token);
return signedJwt;
- } catch (err) {
+ } catch {
return null;
}
}
diff --git a/server/src/modules/users/repositories/repository.ts b/server/src/modules/users/repositories/repository.ts
index bbc4acaefd..0feacea3d5 100644
--- a/server/src/modules/users/repositories/repository.ts
+++ b/server/src/modules/users/repositories/repository.ts
@@ -98,8 +98,8 @@ export class UserRepository extends Repository {
const existingUser = await manager.findOne(User, { where: { email: user.email } });
if (existingUser) {
- Object.assign(existingUser, user);
- return manager.update(User, { id: existingUser.id }, user);
+ await manager.update(User, { id: existingUser.id }, user);
+ return manager.findOne(User, { where: { id: existingUser.id } });
} else {
const newUser = manager.create(User, user);
return manager.save(User, newUser);
diff --git a/server/src/modules/workflows/listeners/app-deletion.listener.ts b/server/src/modules/workflows/listeners/app-actions.listener.ts
similarity index 71%
rename from server/src/modules/workflows/listeners/app-deletion.listener.ts
rename to server/src/modules/workflows/listeners/app-actions.listener.ts
index 302bd36b86..72d28d991e 100644
--- a/server/src/modules/workflows/listeners/app-deletion.listener.ts
+++ b/server/src/modules/workflows/listeners/app-actions.listener.ts
@@ -4,8 +4,8 @@ import { OnEvent } from '@nestjs/event-emitter';
@Injectable()
export class AppsActionsListener {
constructor() {}
- @OnEvent('beforeAppDelete')
+ @OnEvent('app.deleted')
async handleAppDeletion(args: { appId: string }) {
- throw new Error('Method not implemented');
+ console.log(`App with ID ${args.appId} has been deleted.`);
}
}