mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-22 04:10:01 +00:00
fix(editor): Adding branch color (#6380)
* fix(editor): Adding branch color * fix(editor): backend refactor preferences update * fix(editor): frontend refactor preferences update
This commit is contained in:
@@ -44,12 +44,12 @@ export class VersionControlPreferences {
|
||||
): VersionControlPreferences {
|
||||
return new VersionControlPreferences({
|
||||
connected: preferences.connected ?? defaultPreferences.connected,
|
||||
authorEmail: preferences.authorEmail ?? defaultPreferences.authorEmail,
|
||||
authorName: preferences.authorName ?? defaultPreferences.authorName,
|
||||
branchName: preferences.branchName ?? defaultPreferences.branchName,
|
||||
branchColor: preferences.branchColor ?? defaultPreferences.branchColor,
|
||||
branchReadOnly: preferences.branchReadOnly ?? defaultPreferences.branchReadOnly,
|
||||
repositoryUrl: preferences.repositoryUrl ?? defaultPreferences.repositoryUrl,
|
||||
authorName: preferences.authorName ?? defaultPreferences.authorName,
|
||||
authorEmail: preferences.authorEmail ?? defaultPreferences.authorEmail,
|
||||
branchName: preferences.branchName ?? defaultPreferences.branchName,
|
||||
branchReadOnly: preferences.branchReadOnly ?? defaultPreferences.branchReadOnly,
|
||||
branchColor: preferences.branchColor ?? defaultPreferences.branchColor,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Authorized, Get, Post, RestController } from '@/decorators';
|
||||
import { Authorized, Get, Post, Patch, RestController } from '@/decorators';
|
||||
import {
|
||||
versionControlLicensedMiddleware,
|
||||
versionControlLicensedAndEnabledMiddleware,
|
||||
@@ -83,10 +83,38 @@ export class VersionControlController {
|
||||
}
|
||||
|
||||
@Authorized(['global', 'owner'])
|
||||
@Post('/set-read-only', { middlewares: [versionControlLicensedMiddleware] })
|
||||
async setReadOnly(req: VersionControlRequest.SetReadOnly) {
|
||||
@Patch('/preferences', { middlewares: [versionControlLicensedMiddleware] })
|
||||
async updatePreferences(req: VersionControlRequest.UpdatePreferences) {
|
||||
try {
|
||||
this.versionControlPreferencesService.setBranchReadOnly(req.body.branchReadOnly);
|
||||
const sanitizedPreferences: Partial<VersionControlPreferences> = {
|
||||
...req.body,
|
||||
initRepo: false,
|
||||
connected: undefined,
|
||||
publicKey: undefined,
|
||||
repositoryUrl: undefined,
|
||||
authorName: undefined,
|
||||
authorEmail: undefined,
|
||||
};
|
||||
const currentPreferences = this.versionControlPreferencesService.getPreferences();
|
||||
await this.versionControlPreferencesService.validateVersionControlPreferences(
|
||||
sanitizedPreferences,
|
||||
);
|
||||
if (
|
||||
sanitizedPreferences.branchName &&
|
||||
sanitizedPreferences.branchName !== currentPreferences.branchName
|
||||
) {
|
||||
await this.versionControlService.setBranch(sanitizedPreferences.branchName);
|
||||
}
|
||||
if (sanitizedPreferences.branchColor || sanitizedPreferences.branchReadOnly !== undefined) {
|
||||
await this.versionControlPreferencesService.setPreferences(
|
||||
{
|
||||
branchColor: sanitizedPreferences.branchColor,
|
||||
branchReadOnly: sanitizedPreferences.branchReadOnly,
|
||||
},
|
||||
true,
|
||||
);
|
||||
}
|
||||
await this.versionControlService.init();
|
||||
return this.versionControlPreferencesService.getPreferences();
|
||||
} catch (error) {
|
||||
throw new BadRequestError((error as { message: string }).message);
|
||||
@@ -113,16 +141,6 @@ export class VersionControlController {
|
||||
}
|
||||
}
|
||||
|
||||
@Authorized(['global', 'owner'])
|
||||
@Post('/set-branch', { middlewares: [versionControlLicensedMiddleware] })
|
||||
async setBranch(req: VersionControlRequest.SetBranch) {
|
||||
try {
|
||||
return await this.versionControlService.setBranch(req.body.branch);
|
||||
} catch (error) {
|
||||
throw new BadRequestError((error as { message: string }).message);
|
||||
}
|
||||
}
|
||||
|
||||
@Authorized(['global', 'owner'])
|
||||
@Post('/push-workfolder', { middlewares: [versionControlLicensedAndEnabledMiddleware] })
|
||||
async pushWorkfolder(
|
||||
|
||||
@@ -172,7 +172,7 @@ export class VersionControlService {
|
||||
async setBranch(branch: string): Promise<{ branches: string[]; currentBranch: string }> {
|
||||
await this.versionControlPreferencesService.setPreferences({
|
||||
branchName: branch,
|
||||
connected: true,
|
||||
connected: branch?.length > 0,
|
||||
});
|
||||
return this.gitService.setBranch(branch);
|
||||
}
|
||||
@@ -216,40 +216,6 @@ export class VersionControlService {
|
||||
});
|
||||
}
|
||||
|
||||
// async pushWorkfolder(
|
||||
// options: VersionControlPushWorkFolder,
|
||||
// ): Promise<PushResult | VersionControlledFile[]> {
|
||||
// await this.gitService.fetch();
|
||||
// await this.export(); // refresh workfolder
|
||||
// await this.stage(options);
|
||||
// await this.gitService.commit(options.message ?? 'Updated Workfolder');
|
||||
// return this.gitService.push({
|
||||
// branch: this.versionControlPreferencesService.getBranchName(),
|
||||
// force: options.force ?? false,
|
||||
// });
|
||||
// }
|
||||
|
||||
// TODO: Alternate implementation for pull
|
||||
// async pullWorkfolder(
|
||||
// options: VersionControllPullOptions,
|
||||
// ): Promise<ImportResult | VersionControlledFile[] | PullResult | undefined> {
|
||||
// const diffResult = await this.getStatus();
|
||||
// const possibleConflicts = diffResult?.filter((file) => file.conflict);
|
||||
// if (possibleConflicts?.length > 0 || options.force === true) {
|
||||
// await this.unstage();
|
||||
// if (options.force === true) {
|
||||
// return this.resetWorkfolder(options);
|
||||
// } else {
|
||||
// return diffResult;
|
||||
// }
|
||||
// }
|
||||
// const pullResult = await this.gitService.pull();
|
||||
// if (options.importAfterPull) {
|
||||
// return this.import(options);
|
||||
// }
|
||||
// return pullResult;
|
||||
// }
|
||||
|
||||
async pullWorkfolder(
|
||||
options: VersionControllPullOptions,
|
||||
): Promise<ImportResult | StatusResult | undefined> {
|
||||
|
||||
@@ -114,19 +114,10 @@ export class VersionControlPreferencesService {
|
||||
return this.versionControlPreferences;
|
||||
}
|
||||
|
||||
setBranchReadOnly(branchReadOnly: boolean): void {
|
||||
this._versionControlPreferences.branchReadOnly = branchReadOnly;
|
||||
}
|
||||
|
||||
async validateVersionControlPreferences(
|
||||
preferences: Partial<VersionControlPreferences>,
|
||||
allowMissingProperties = true,
|
||||
): Promise<ValidationError[]> {
|
||||
if (this.isVersionControlConnected()) {
|
||||
if (preferences.repositoryUrl !== this._versionControlPreferences.repositoryUrl) {
|
||||
throw new Error('Cannot change repository while connected');
|
||||
}
|
||||
}
|
||||
const preferencesObject = new VersionControlPreferences(preferences);
|
||||
const validationResult = await validate(preferencesObject, {
|
||||
forbidUnknownValues: false,
|
||||
|
||||
Reference in New Issue
Block a user