diff --git a/webapp/src/client/app/modules/web-client/form/form-components/vnc/vnc-form.component.html b/webapp/src/client/app/modules/web-client/form/form-components/vnc/vnc-form.component.html
index 9d3c478ad..6bfa03187 100644
--- a/webapp/src/client/app/modules/web-client/form/form-components/vnc/vnc-form.component.html
+++ b/webapp/src/client/app/modules/web-client/form/form-components/vnc/vnc-form.component.html
@@ -40,20 +40,39 @@
diff --git a/webapp/src/client/app/modules/web-client/form/form-components/vnc/vnc-form.component.ts b/webapp/src/client/app/modules/web-client/form/form-components/vnc/vnc-form.component.ts
index 1db4e9d04..8ea5cc297 100644
--- a/webapp/src/client/app/modules/web-client/form/form-components/vnc/vnc-form.component.ts
+++ b/webapp/src/client/app/modules/web-client/form/form-components/vnc/vnc-form.component.ts
@@ -2,6 +2,7 @@ import { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { BaseComponent } from '@shared/bases/base.component';
+import { Encoding } from '@shared/enums/encoding.enum';
import { VncAuthMode } from '@shared/enums/web-client-auth-mode.enum';
import { WebFormService } from '@shared/services/web-form.service';
import { SelectItem } from 'primeng/api';
@@ -14,6 +15,11 @@ interface FormInputVisibility {
showPasswordInput?: boolean;
}
+interface TightOptions {
+ jpeg: boolean;
+ png: boolean;
+}
+
@Component({
selector: 'vnc-form',
templateUrl: 'vnc-form.component.html',
@@ -31,9 +37,16 @@ export class VncFormComponent extends BaseComponent implements OnInit {
};
showMoreSettings = false;
+ showPixelFormatSelector = false;
+ showTightOptions = false;
showExtendedClipboardCheckbox = false;
showAutoClipboardCheckbox = false;
+ pixelFormatSelectorDisabled = false;
+
+ selectedEncoding = Encoding.Default;
+ tightOptions: TightOptions = { jpeg: true, png: true };
+
constructor(
private formService: WebFormService,
private cdr: ChangeDetectorRef,
@@ -97,6 +110,75 @@ export class VncFormComponent extends BaseComponent implements OnInit {
this.showAutoClipboardCheckbox = new UAParser().getEngine().name === 'Blink' && window.isSecureContext;
}
+ subscribeToSelectedEncodingChanges(): void {
+ this.form
+ .get('enabledEncoding')
+ .valueChanges.pipe(
+ takeUntil(this.destroyed$),
+ startWith(this.form.get('enabledEncoding').value as Encoding),
+ switchMap((encoding: Encoding) => {
+ this.showPixelFormatSelector = encoding !== Encoding.Default;
+ this.showTightOptions = encoding === Encoding.Tight;
+ this.selectedEncoding = encoding;
+
+ return of(undefined);
+ }),
+ )
+ .subscribe({
+ error: (error) => console.error('Failed to subscribe to selected encoding changes', error),
+ });
+ }
+
+ subscribeToJpegEnabledChanges(): void {
+ this.form
+ .get('jpegEnabled')
+ .valueChanges.pipe(
+ takeUntil(this.destroyed$),
+ startWith(this.form.get('jpegEnabled').value as boolean),
+ switchMap((jpegEnabled: boolean) => {
+ this.tightOptions.jpeg = jpegEnabled;
+ this.updatePixelFormatOptionState();
+ this.cdr.detectChanges();
+
+ return of(undefined);
+ }),
+ )
+ .subscribe({
+ error: (error) => console.error('Failed to subscribe to jpeg enabled changes', error),
+ });
+ }
+
+ subscribeToPngEnabledChanges(): void {
+ this.form
+ .get('pngEnabled')
+ .valueChanges.pipe(
+ takeUntil(this.destroyed$),
+ startWith(this.form.get('pngEnabled').value as boolean),
+ switchMap((pngEnabled: boolean) => {
+ this.tightOptions.png = pngEnabled;
+ this.updatePixelFormatOptionState();
+ this.cdr.detectChanges();
+
+ return of(undefined);
+ }),
+ )
+ .subscribe({
+ error: (error) => console.error('Failed to subscribe to jpeg enabled changes', error),
+ });
+ }
+
+ private updatePixelFormatOptionState(): void {
+ const { jpeg, png } = this.tightOptions;
+
+ // Disable PixelFormat option for Tight JPEG and Tight PNG.
+ if (this.selectedEncoding === Encoding.Tight && (jpeg || png)) {
+ this.pixelFormatSelectorDisabled = true;
+ return;
+ }
+
+ this.pixelFormatSelectorDisabled = false;
+ }
+
private subscribeToAuthModeChanges(): void {
this.form
.get('authMode')
diff --git a/webapp/src/client/app/modules/web-client/form/form-controls/color-format-control/color-format-control.component.ts b/webapp/src/client/app/modules/web-client/form/form-controls/color-format-control/color-format-control.component.ts
index 6c3a0d78c..19608804a 100644
--- a/webapp/src/client/app/modules/web-client/form/form-controls/color-format-control/color-format-control.component.ts
+++ b/webapp/src/client/app/modules/web-client/form/form-controls/color-format-control/color-format-control.component.ts
@@ -1,4 +1,4 @@
-import { Component, Input, OnInit } from '@angular/core';
+import { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { BaseComponent } from '@shared/bases/base.component';
import { ColorFormat } from '@shared/enums/color-format.enum';
@@ -10,9 +10,11 @@ import { WebFormService } from '@shared/services/web-form.service';
templateUrl: 'color-format-control.component.html',
styleUrls: ['color-format-control.component.scss'],
})
-export class ColorFormatControlComponent extends BaseComponent implements OnInit {
+export class ColorFormatControlComponent extends BaseComponent implements OnInit, OnDestroy, OnChanges {
@Input() parentForm: FormGroup;
@Input() inputFormData;
+ @Input() disabled: boolean;
+ @Input() disabledTooltip: string;
colorFormatOptions: SelectItemWithTooltip[];
@@ -22,16 +24,51 @@ export class ColorFormatControlComponent extends BaseComponent implements OnInit
ngOnInit(): void {
this.colorFormatOptions = this.formService.getColorFormatOptions();
- this.formService.addControlToForm({
- formGroup: this.parentForm,
- controlName: 'colorFormat',
- inputFormData: this.inputFormData,
- isRequired: false,
- defaultValue: ColorFormat.Default,
- });
+
+ if (!this.parentForm.contains('colorFormat')) {
+ this.formService.addControlToForm({
+ formGroup: this.parentForm,
+ controlName: 'colorFormat',
+ inputFormData: this.inputFormData,
+ isRequired: false,
+ defaultValue: ColorFormat.Default,
+ });
+ } else {
+ this.parentForm.get('colorFormat').enable();
+ }
+
+ if (this.disabled) {
+ this.parentForm.get('colorFormat').disable();
+ }
+ }
+
+ ngOnChanges(changes: SimpleChanges): void {
+ const disabled = changes.disabled;
+ if (disabled) {
+ // First `ngOnChanges` runs before `ngOnInit`.
+ if (disabled.firstChange) {
+ return;
+ }
+
+ if (disabled.currentValue) {
+ this.parentForm.get('colorFormat').disable();
+ } else {
+ this.parentForm.get('colorFormat').enable();
+ }
+ }
+ }
+
+ ngOnDestroy() {
+ super.ngOnDestroy();
+ // Disable the control to ignore it when reading the form. At the same time, the value is preserved.
+ this.parentForm.get('colorFormat').disable();
}
getSelectedTooltip(): string {
+ if (this.disabled) {
+ return this.disabledTooltip;
+ }
+
const selectedOptionValue = this.parentForm.get('colorFormat')?.value;
return this.colorFormatOptions.find((item) => item.value === selectedOptionValue)?.tooltipText || '';
}
diff --git a/webapp/src/client/app/modules/web-client/form/form-controls/enabled-encoding-control/enabled-encoding-control.component.html b/webapp/src/client/app/modules/web-client/form/form-controls/enabled-encoding-control/enabled-encoding-control.component.html
new file mode 100644
index 000000000..a95cbf293
--- /dev/null
+++ b/webapp/src/client/app/modules/web-client/form/form-controls/enabled-encoding-control/enabled-encoding-control.component.html
@@ -0,0 +1,10 @@
+
diff --git a/webapp/src/client/app/modules/web-client/form/form-controls/enabled-encodings-control/enabled-encodings-control.component.scss b/webapp/src/client/app/modules/web-client/form/form-controls/enabled-encoding-control/enabled-encoding-control.component.scss
similarity index 100%
rename from webapp/src/client/app/modules/web-client/form/form-controls/enabled-encodings-control/enabled-encodings-control.component.scss
rename to webapp/src/client/app/modules/web-client/form/form-controls/enabled-encoding-control/enabled-encoding-control.component.scss
diff --git a/webapp/src/client/app/modules/web-client/form/form-controls/enabled-encodings-control/enabled-encodings-control.component.ts b/webapp/src/client/app/modules/web-client/form/form-controls/enabled-encoding-control/enabled-encoding-control.component.ts
similarity index 59%
rename from webapp/src/client/app/modules/web-client/form/form-controls/enabled-encodings-control/enabled-encodings-control.component.ts
rename to webapp/src/client/app/modules/web-client/form/form-controls/enabled-encoding-control/enabled-encoding-control.component.ts
index b0f952d1b..c55e43ff0 100644
--- a/webapp/src/client/app/modules/web-client/form/form-controls/enabled-encodings-control/enabled-encodings-control.component.ts
+++ b/webapp/src/client/app/modules/web-client/form/form-controls/enabled-encoding-control/enabled-encoding-control.component.ts
@@ -1,4 +1,4 @@
-import { Component, Input, OnInit } from '@angular/core';
+import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { Encoding } from '@gateway/shared/enums/encoding.enum';
import { BaseComponent } from '@shared/bases/base.component';
@@ -6,14 +6,16 @@ import { WebFormService } from '@shared/services/web-form.service';
import { SelectItem } from 'primeng/api';
@Component({
- selector: 'web-client-enabled-encodings-control',
- templateUrl: 'enabled-encodings-control.component.html',
- styleUrls: ['enabled-encodings-control.component.scss'],
+ selector: 'web-client-enabled-encoding-control',
+ templateUrl: 'enabled-encoding-control.component.html',
+ styleUrls: ['enabled-encoding-control.component.scss'],
})
-export class EnabledEncodingsControlComponent extends BaseComponent implements OnInit {
+export class EnabledEncodingControlComponent extends BaseComponent implements OnInit {
@Input() parentForm: FormGroup;
@Input() inputFormData;
+ @Output() controlReady = new EventEmitter
();
+
supportedEncodings: SelectItem[];
constructor(private formService: WebFormService) {
@@ -24,10 +26,12 @@ export class EnabledEncodingsControlComponent extends BaseComponent implements O
this.supportedEncodings = this.formService.getSupportedEncodings();
this.formService.addControlToForm({
formGroup: this.parentForm,
- controlName: 'enabledEncodings',
+ controlName: 'enabledEncoding',
inputFormData: this.inputFormData,
isRequired: false,
- defaultValue: Encoding.getAllEncodings(),
+ defaultValue: Encoding.Default,
});
+
+ this.controlReady.emit();
}
}
diff --git a/webapp/src/client/app/modules/web-client/form/form-controls/enabled-encodings-control/enabled-encodings-control.component.html b/webapp/src/client/app/modules/web-client/form/form-controls/enabled-encodings-control/enabled-encodings-control.component.html
deleted file mode 100644
index ba445466d..000000000
--- a/webapp/src/client/app/modules/web-client/form/form-controls/enabled-encodings-control/enabled-encodings-control.component.html
+++ /dev/null
@@ -1,9 +0,0 @@
-
diff --git a/webapp/src/client/app/modules/web-client/form/form-controls/jpeg-quality-level-control/jpeg-quality-level-control.component.ts b/webapp/src/client/app/modules/web-client/form/form-controls/jpeg-quality-level-control/jpeg-quality-level-control.component.ts
index de8ce796b..5e11d3ece 100644
--- a/webapp/src/client/app/modules/web-client/form/form-controls/jpeg-quality-level-control/jpeg-quality-level-control.component.ts
+++ b/webapp/src/client/app/modules/web-client/form/form-controls/jpeg-quality-level-control/jpeg-quality-level-control.component.ts
@@ -1,4 +1,4 @@
-import { Component, Input, OnInit } from '@angular/core';
+import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { BaseComponent } from '@shared/bases/base.component';
@@ -9,10 +9,12 @@ import { WebFormService } from '@shared/services/web-form.service';
templateUrl: 'jpeg-quality-level-control.component.html',
styleUrls: ['jpeg-quality-level-control.component.scss'],
})
-export class JpegQualityLevelControlComponent extends BaseComponent implements OnInit {
+export class JpegQualityLevelControlComponent extends BaseComponent implements OnInit, OnDestroy {
@Input() parentForm: FormGroup;
@Input() inputFormData;
+ @Output() controlReady = new EventEmitter();
+
jpegEnabled = true;
constructor(private formService: WebFormService) {
@@ -24,20 +26,34 @@ export class JpegQualityLevelControlComponent extends BaseComponent implements O
}
ngOnInit(): void {
- this.formService.addControlToForm({
- formGroup: this.parentForm,
- controlName: 'jpegEnabled',
- inputFormData: this.inputFormData,
- isRequired: false,
- defaultValue: true,
- });
-
- this.formService.addControlToForm({
- formGroup: this.parentForm,
- controlName: 'jpegQualityLevel',
- inputFormData: this.inputFormData,
- isRequired: false,
- defaultValue: 9,
- });
+ if (!this.parentForm.contains('jpegEnabled')) {
+ this.formService.addControlToForm({
+ formGroup: this.parentForm,
+ controlName: 'jpegEnabled',
+ inputFormData: this.inputFormData,
+ isRequired: false,
+ defaultValue: true,
+ });
+
+ this.formService.addControlToForm({
+ formGroup: this.parentForm,
+ controlName: 'jpegQualityLevel',
+ inputFormData: this.inputFormData,
+ isRequired: false,
+ defaultValue: 9,
+ });
+
+ this.controlReady.emit();
+ } else {
+ this.parentForm.get('jpegEnabled').enable();
+ }
+
+ this.jpegEnabled = this.parentForm.get('jpegEnabled').value;
+ }
+
+ ngOnDestroy() {
+ super.ngOnDestroy();
+ // Disable the control to ignore it when reading the form. At the same time, the value is preserved.
+ this.parentForm.get('jpegEnabled').disable();
}
}
diff --git a/webapp/src/client/app/modules/web-client/form/form-controls/tight-png-enabled-control/tight-png-enabled-control.component.html b/webapp/src/client/app/modules/web-client/form/form-controls/tight-png-enabled-control/tight-png-enabled-control.component.html
new file mode 100644
index 000000000..6f246e73f
--- /dev/null
+++ b/webapp/src/client/app/modules/web-client/form/form-controls/tight-png-enabled-control/tight-png-enabled-control.component.html
@@ -0,0 +1,7 @@
+
diff --git a/webapp/src/client/app/modules/web-client/form/form-controls/tight-png-enabled-control/tight-png-enabled-control.component.scss b/webapp/src/client/app/modules/web-client/form/form-controls/tight-png-enabled-control/tight-png-enabled-control.component.scss
new file mode 100644
index 000000000..8fed1ca0d
--- /dev/null
+++ b/webapp/src/client/app/modules/web-client/form/form-controls/tight-png-enabled-control/tight-png-enabled-control.component.scss
@@ -0,0 +1,22 @@
+@import '../../../../../../../assets/css/style/mixins';
+@import "../../../../../../../assets/css/style/variables";
+@import "../../../../../../../assets/css/theme/theme-mode-variables";
+
+.gateway-form-input {
+ display: flex;
+ align-items: center;
+}
+
+.form-helper-text {
+ line-height: 11px;
+ word-wrap: break-word;
+ color: var(--status-error-text-color);
+ font-size: 11px;
+ font-family: Open Sans;
+ font-weight: 400;
+ padding-left: 0;
+ justify-content: flex-start;
+ align-items: flex-start;
+ gap: 10px;
+ display: inline-flex;
+}
diff --git a/webapp/src/client/app/modules/web-client/form/form-controls/tight-png-enabled-control/tight-png-enabled-control.component.ts b/webapp/src/client/app/modules/web-client/form/form-controls/tight-png-enabled-control/tight-png-enabled-control.component.ts
new file mode 100644
index 000000000..f6fb2d841
--- /dev/null
+++ b/webapp/src/client/app/modules/web-client/form/form-controls/tight-png-enabled-control/tight-png-enabled-control.component.ts
@@ -0,0 +1,43 @@
+import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';
+import { FormGroup } from '@angular/forms';
+
+import { BaseComponent } from '@shared/bases/base.component';
+import { WebFormService } from '@shared/services/web-form.service';
+
+@Component({
+ selector: 'web-client-tight-png-enabled-control',
+ templateUrl: 'tight-png-enabled-control.component.html',
+ styleUrls: ['tight-png-enabled-control.component.scss'],
+})
+export class TightPngEnabledControlComponent extends BaseComponent implements OnInit, OnDestroy {
+ @Input() parentForm: FormGroup;
+ @Input() inputFormData;
+
+ @Output() controlReady = new EventEmitter();
+
+ constructor(private formService: WebFormService) {
+ super();
+ }
+
+ ngOnInit(): void {
+ if (!this.parentForm.contains('pngEnabled')) {
+ this.formService.addControlToForm({
+ formGroup: this.parentForm,
+ controlName: 'pngEnabled',
+ inputFormData: this.inputFormData,
+ isRequired: false,
+ defaultValue: true,
+ });
+
+ this.controlReady.emit();
+ } else {
+ this.parentForm.get('pngEnabled').enable();
+ }
+ }
+
+ ngOnDestroy() {
+ super.ngOnDestroy();
+ // Disable the control to ignore it when reading the form. At the same time, the value is preserved.
+ this.parentForm.get('pngEnabled').disable();
+ }
+}
diff --git a/webapp/src/client/app/modules/web-client/vnc/web-client-vnc.component.ts b/webapp/src/client/app/modules/web-client/vnc/web-client-vnc.component.ts
index 134cd7a9a..d2fe458af 100644
--- a/webapp/src/client/app/modules/web-client/vnc/web-client-vnc.component.ts
+++ b/webapp/src/client/app/modules/web-client/vnc/web-client-vnc.component.ts
@@ -445,17 +445,18 @@ export class WebClientVncComponent extends WebClientBaseComponent implements OnI
}
private fetchParameters(formData: VncFormDataInput): Observable {
- const {
+ let {
hostname,
username,
password,
enableCursor,
enableExtendedClipboard,
- enabledEncodings,
+ enabledEncoding,
colorFormat,
- ultraVirtualDisplay,
jpegEnabled,
jpegQualityLevel,
+ pngEnabled,
+ ultraVirtualDisplay,
wheelSpeedFactor = 1,
} = formData;
const extractedData: ExtractedHostnamePort = this.utils.string.extractHostnameAndPort(hostname, DefaultVncPort);
@@ -467,6 +468,10 @@ export class WebClientVncComponent extends WebClientBaseComponent implements OnI
const desktopScreenSize: DesktopSize =
this.webClientService.getDesktopSize(this.formData) ?? this.webSessionService.getWebSessionScreenSizeSnapshot();
+ if (enabledEncoding === Encoding.Tight && pngEnabled) {
+ enabledEncoding = Encoding.TightPng;
+ }
+
const connectionParameters: IronVNCConnectionParameters = {
username,
password,
@@ -475,7 +480,7 @@ export class WebClientVncComponent extends WebClientBaseComponent implements OnI
gatewayAddress,
screenSize: desktopScreenSize,
sessionId,
- enabledEncodings: enabledEncodings.join(','),
+ enabledEncoding,
colorFormat,
jpegQualityLevel: jpegEnabled ? jpegQualityLevel : undefined,
enableCursor,
@@ -521,10 +526,12 @@ export class WebClientVncComponent extends WebClientBaseComponent implements OnI
configBuilder.withDesktopSize(connectionParameters.screenSize);
}
- if (connectionParameters.enabledEncodings !== '') {
- configBuilder.withExtension(enabledEncodings(connectionParameters.enabledEncodings));
- } else {
+ if (connectionParameters.enabledEncoding === Encoding.Default) {
+ // When the Default option is selected, we enable all encodings and use server's pixel format.
configBuilder.withExtension(enabledEncodings(Encoding.getAllEncodings().join(',')));
+ configBuilder.withExtension(jpegQualityLevel(9));
+ } else {
+ configBuilder.withExtension(enabledEncodings(connectionParameters.enabledEncoding));
}
if (connectionParameters.colorFormat) {
diff --git a/webapp/src/client/app/modules/web-client/web-client.module.ts b/webapp/src/client/app/modules/web-client/web-client.module.ts
index 3ab8f41f6..4de984ede 100644
--- a/webapp/src/client/app/modules/web-client/web-client.module.ts
+++ b/webapp/src/client/app/modules/web-client/web-client.module.ts
@@ -35,11 +35,12 @@ import { ColorFormatControlComponent } from './form/form-controls/color-format-c
// import { ForceWsPortControlComponent } from './form/form-controls/force-ws-port-control/force-ws-port-control.component';
// import { RequestSharedSessionControlComponent } from './form/form-controls/request-shared-session-control/request-shared-session-control.component';
// import { SharingApprovalModeControlComponent } from './form/form-controls/sharing-approval-mode-control/sharing-approval-mode-control.component';
-import { EnabledEncodingsControlComponent } from './form/form-controls/enabled-encodings-control/enabled-encodings-control.component';
+import { EnabledEncodingControlComponent } from './form/form-controls/enabled-encoding-control/enabled-encoding-control.component';
import { ExtendedClipboardControlComponent } from './form/form-controls/extended-clipboard-control/extended-clipboard-control.component';
import { FileControlComponent } from './form/form-controls/file-control/file-control.component';
import { JpegQualityLevelControlComponent } from './form/form-controls/jpeg-quality-level-control/jpeg-quality-level-control.component';
import { ResolutionQualityControlComponent } from './form/form-controls/resolution-quality-control/resolution-quality-control.component';
+import { TightPngEnabledControlComponent } from './form/form-controls/tight-png-enabled-control/tight-png-enabled-control.component';
import { UltraVirtualDisplayControlComponent } from './form/form-controls/ultra-virtual-display-control/ultra-virtual-display-control.component';
import { NetScanComponent } from './net-scan/net-scan.component';
import { WebClientRdpComponent } from './rdp/web-client-rdp.component';
@@ -82,11 +83,12 @@ const routes: Routes = [
PasswordControlComponent,
ExtendedClipboardControlComponent,
JpegQualityLevelControlComponent,
+ TightPngEnabledControlComponent,
ScreenSizeControlComponent,
EnableDisplayConfigurationControlComponent,
KdcUrlControlComponent,
PreConnectionBlobControlComponent,
- EnabledEncodingsControlComponent,
+ EnabledEncodingControlComponent,
ColorFormatControlComponent,
EnableCursorControlComponent,
AutoClipboardControlComponent,
diff --git a/webapp/src/client/app/shared/enums/encoding.enum.ts b/webapp/src/client/app/shared/enums/encoding.enum.ts
index 992522fe3..3933443ac 100644
--- a/webapp/src/client/app/shared/enums/encoding.enum.ts
+++ b/webapp/src/client/app/shared/enums/encoding.enum.ts
@@ -1,6 +1,7 @@
import { SelectItem } from 'primeng/api';
enum Encoding {
+ Default = '',
Raw = 'raw',
Zlib = 'zlib',
Hextile = 'hextile',
@@ -14,6 +15,9 @@ namespace Encoding {
Object.entries(Encoding)
// Filter out properties that are not from enum values (like function `getSelectItems`).
.filter(([_, value]) => typeof value === 'string')
+ // We don't want to add the Tight PNG to the selector with other encodings.
+ // We make a separate option for PNG.
+ .filter(([_, value]) => value !== Encoding.TightPng)
.map(([key, value]) => ({
label: key,
value,
@@ -26,6 +30,7 @@ namespace Encoding {
Object.values(Encoding)
// Filter out properties that are not from enum values (like function `getSelectItems`).
.filter((value) => typeof value === 'string')
+ .filter((value) => value !== Encoding.Default)
);
}
}
diff --git a/webapp/src/client/app/shared/interfaces/connection-params.interfaces.ts b/webapp/src/client/app/shared/interfaces/connection-params.interfaces.ts
index 354301157..3f670f98b 100644
--- a/webapp/src/client/app/shared/interfaces/connection-params.interfaces.ts
+++ b/webapp/src/client/app/shared/interfaces/connection-params.interfaces.ts
@@ -1,3 +1,4 @@
+import { Encoding } from '@shared/enums/encoding.enum';
import { DesktopSize } from '@shared/models/desktop-size';
export interface SessionTokenParameters {
@@ -35,7 +36,7 @@ export interface IronVNCConnectionParameters {
gatewayAddress?: string;
token?: string;
screenSize?: DesktopSize;
- enabledEncodings?: string;
+ enabledEncoding: Encoding;
colorFormat: string;
jpegQualityLevel?: number;
enableCursor: boolean;
diff --git a/webapp/src/client/app/shared/interfaces/forms.interfaces.ts b/webapp/src/client/app/shared/interfaces/forms.interfaces.ts
index bce396ced..62452d31b 100644
--- a/webapp/src/client/app/shared/interfaces/forms.interfaces.ts
+++ b/webapp/src/client/app/shared/interfaces/forms.interfaces.ts
@@ -44,10 +44,11 @@ export interface VncFormDataInput {
// The extended clipboard control may not be initialized if the browser does not support the clipboard API.
enableExtendedClipboard?: boolean;
ultraVirtualDisplay: boolean;
- enabledEncodings: Encoding[];
+ enabledEncoding: Encoding;
colorFormat: ColorFormat;
jpegEnabled: boolean;
jpegQualityLevel: number;
+ pngEnabled: boolean;
wheelSpeedFactor: number;
screenSize: ScreenSize;
autoClipboard?: boolean;