Skip to content

Commit

Permalink
SVYX-344 Certificate error with corporate certificate when
Browse files Browse the repository at this point in the history
downloading/writing a file in NG Desktop
  • Loading branch information
mvid-servoy committed Dec 23, 2021
1 parent 1a5f5b2 commit 7286f43
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 32 deletions.
32 changes: 17 additions & 15 deletions ngdesktopfile/ngdesktopfile/ngdesktopfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,13 @@ angular.module('ngdesktopfile',['servoy'])
}
else func();
}
function invokeCallback(callback, callbackAlreadyCalled, message) {
if (callback && callbackAlreadyCalled === false) {
$window.executeInlineScript(callback.formname, callback.script, [message]);
return true
}
return callbackAlreadyCalled;
}
return {
waitForDefered: function(func) {
waitForDefered(func);
Expand Down Expand Up @@ -217,7 +224,7 @@ angular.module('ngdesktopfile',['servoy'])
var firstWrite = true;
var fileSize = 0;
var writeSize = 0;
var errorReceived = false;
var callbackAlreadyCalled = false; //first callback call will set this flag to true
const request = net.request(
{
url: getFullUrl(url),
Expand All @@ -233,19 +240,17 @@ angular.module('ngdesktopfile',['servoy'])
firstWrite = false;
fs.writeFile(realPath, chunk, function(err) {
if (err) {
if (callback)
$window.executeInlineScript(callback.formname, callback.script, ['error']);
defer.resolve(false); //global defer
callbackAlreadyCalled = invokeCallback(callback, callbackAlreadyCalled, 'error');
defer.resolve(false);
defer = null;
throw err;
}
});
} else {
fs.appendFile(realPath, chunk, function(err) {
if (err) {
if (callback)
$window.executeInlineScript(callback.formname, callback.script, ['error']);
defer.resolve(false); //global defer
callbackAlreadyCalled = invokeCallback(callback, callbackAlreadyCalled, 'error');
defer.resolve(false);
defer = null;
throw err;
}
Expand All @@ -254,18 +259,17 @@ angular.module('ngdesktopfile',['servoy'])
writeSize = writeSize + chunk.length;

if (writeSize === fileSize) {
callbackAlreadyCalled = invokeCallback(callback, callbackAlreadyCalled, 'close');
defer.resolve(true);
defer = null;
}
});
});

request.on('error', (err) => {//called only for network error
if (callback) {
$window.executeInlineScript(callback.formname, callback.script, ['error']);
}
callbackAlreadyCalled = invokeCallback(callback, callbackAlreadyCalled, 'error');
if (defer != null) {
defer.resolve(false); //global defer
defer.resolve(false);
defer = null;
}
if (err) {
Expand All @@ -274,10 +278,8 @@ angular.module('ngdesktopfile',['servoy'])
}
});

request.on('close', () => {//close may be emitted due to a previous error event. In this case the callback was already called;
if ((callback) && (errorReceived === false)) {
$window.executeInlineScript(callback.formname, callback.script, ['close']);
}
request.on('close', () => {
callbackAlreadyCalled = invokeCallback(callback, callbackAlreadyCalled, 'close');
});

request.setHeader('Content-Type', 'application/json');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -757,8 +757,8 @@ export class NGDesktopFileService {
let firstWrite = true;
let fileSize = 0;
let writeSize = 0;
let errorReceived = false;
let callbackAlreadyCalled = false;

const request = this.net.request({
url: this.getFullUrl(url),
session: this.remote.getCurrentWebContents().session,
Expand All @@ -773,21 +773,17 @@ export class NGDesktopFileService {

this.fs.writeFile(realPath, chunk, (error) => {
if (error) {
if (callback) {
this.servoyService.executeInlineScript(callback.formname, callback.script, ['error']);
}
this.defer.resolve(false); //global defer
callbackAlreadyCalled = this.invokeCallback(callback, callbackAlreadyCalled, 'error');
this.defer.resolve(false);
this.defer = null;
throw error;
}
});
} else {
this.fs.appendFile(realPath, chunk, (error) => {
if (error) {
if (callback) {
this.servoyService.executeInlineScript(callback.formname, callback.script, ['error']);
}
this.defer.resolve(false); //global defer
callbackAlreadyCalled = this.invokeCallback(callback, callbackAlreadyCalled, 'error');
this.defer.resolve(false);
this.defer = null;
throw error;
}
Expand All @@ -796,6 +792,7 @@ export class NGDesktopFileService {
writeSize = writeSize + chunk.length;

if (writeSize === fileSize) {
callbackAlreadyCalled = this.invokeCallback(callback, callbackAlreadyCalled, 'close');
this.defer.resolve(true);
this.defer = null;
}
Expand All @@ -804,23 +801,18 @@ export class NGDesktopFileService {

request.on('error', (error) => {
if (error) {
if (callback) {
this.servoyService.executeInlineScript(callback.formname, callback.script, ['error']);
}
callbackAlreadyCalled = this.invokeCallback(callback, callbackAlreadyCalled, 'error');
if (this.defer != null) {
this.defer.resolve(false); //global defer
this.defer = null;
}
if (error) {
errorReceived = true;
throw error;
}
}
});
request.on('close', () => {//close may be emitted due to a previous error event. In this case the callback was already called;
if ((callback) && (errorReceived === false)) {
this.servoyService.executeInlineScript(callback.formname, callback.script, ['close']);
}
callbackAlreadyCalled = this.invokeCallback(callback, callbackAlreadyCalled, 'close');
});

request.setHeader('Content-Type', 'application/json');
Expand Down Expand Up @@ -910,5 +902,13 @@ export class NGDesktopFileService {
}
}

private invokeCallback(callback: { formname: string; script: string }, callbackAlreadyCalled: boolean, message: string) {
if (callback && callbackAlreadyCalled === false) {
this.servoyService.executeInlineScript(callback.formname, callback.script, [message]);
return true;
}
return callbackAlreadyCalled;
}

}

0 comments on commit 7286f43

Please sign in to comment.