Compare commits
No commits in common. "470a0edd80157ee593c1fd9266d122f61674051d" and "75fa9e2270439da21a6b32098fef4dc950e705a3" have entirely different histories.
470a0edd80
...
75fa9e2270
@ -299,13 +299,10 @@ export class DocumentPrinterClient {
|
|||||||
|
|
||||||
async updateJobState(jobId, state) {
|
async updateJobState(jobId, state) {
|
||||||
logger.info(`Updating job state for ${jobId}`);
|
logger.info(`Updating job state for ${jobId}`);
|
||||||
const notify =
|
|
||||||
state?.type !== "deploying" && state?.type !== "queued";
|
|
||||||
await this.socketClient.editObject({
|
await this.socketClient.editObject({
|
||||||
_id: jobId,
|
_id: jobId,
|
||||||
objectType: "documentJob",
|
objectType: "documentJob",
|
||||||
updateData: { state: state },
|
updateData: { state: state },
|
||||||
notify,
|
|
||||||
});
|
});
|
||||||
logger.info(`Updated job state for ${jobId}:`, state);
|
logger.info(`Updated job state for ${jobId}:`, state);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -142,7 +142,7 @@ export default class ReceiptInterface {
|
|||||||
const imageBuffer = Buffer.isBuffer(image)
|
const imageBuffer = Buffer.isBuffer(image)
|
||||||
? Buffer.from(image)
|
? Buffer.from(image)
|
||||||
: Buffer.from(image);
|
: Buffer.from(image);
|
||||||
await this.receiptPrinter.printImageBuffer(imageBuffer);
|
this.receiptPrinter.printImageBuffer(imageBuffer);
|
||||||
this.receiptPrinter.cut();
|
this.receiptPrinter.cut();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,24 +168,21 @@ export default class ReceiptInterface {
|
|||||||
`Deploying job ${documentJob._id} to receipt printer ${this.name}`
|
`Deploying job ${documentJob._id} to receipt printer ${this.name}`
|
||||||
);
|
);
|
||||||
|
|
||||||
const imageObj =
|
const jpgObj =
|
||||||
await this.documentPrinterClient.socketClient.renderTemplateJPG(
|
await this.documentPrinterClient.socketClient.renderTemplateJPG({
|
||||||
{
|
_id: documentTemplate._id,
|
||||||
_id: documentTemplate._id,
|
content: documentTemplate.content,
|
||||||
content: documentTemplate.content,
|
object: object,
|
||||||
object: object,
|
width: 512,
|
||||||
width: 512,
|
});
|
||||||
},
|
|
||||||
"png",
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!imageObj || !imageObj.images) {
|
if (!jpgObj || !jpgObj.images) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
imageObj?.error || "Failed to render document template to image"
|
jpgObj?.error || "Failed to render document template to image"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.images.set(documentJob._id, imageObj.images);
|
this.images.set(documentJob._id, jpgObj.images);
|
||||||
return { success: true };
|
return { success: true };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
import log4js from "log4js";
|
import log4js from "log4js";
|
||||||
import { WebSocketScanner } from "../network/websocketScanner.js";
|
import { WebSocketScanner } from "../network/websocketScanner.js";
|
||||||
import { io } from "socket.io-client";
|
import { io } from "socket.io-client";
|
||||||
import axios from "axios";
|
|
||||||
// Load configuration
|
// Load configuration
|
||||||
import { loadConfig, saveConfig } from "../config.js";
|
import { loadConfig, saveConfig } from "../config.js";
|
||||||
import { getDeviceInfo } from "../utils.js";
|
import { getDeviceInfo } from "../utils.js";
|
||||||
@ -430,14 +429,7 @@ export class SocketClient {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async editObject({
|
async editObject({ objectType, _id, populate, updateData, auditLog = true }) {
|
||||||
objectType,
|
|
||||||
_id,
|
|
||||||
populate,
|
|
||||||
updateData,
|
|
||||||
auditLog = true,
|
|
||||||
notify = true,
|
|
||||||
}) {
|
|
||||||
logger.trace("Editing object...", {
|
logger.trace("Editing object...", {
|
||||||
objectType,
|
objectType,
|
||||||
_id,
|
_id,
|
||||||
@ -452,7 +444,6 @@ export class SocketClient {
|
|||||||
populate,
|
populate,
|
||||||
updateData,
|
updateData,
|
||||||
auditLog,
|
auditLog,
|
||||||
notify,
|
|
||||||
},
|
},
|
||||||
(result) => {
|
(result) => {
|
||||||
if (result && result.error) {
|
if (result && result.error) {
|
||||||
@ -519,87 +510,34 @@ export class SocketClient {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getApiUrl() {
|
|
||||||
return this.fileManager.getApiUrl();
|
|
||||||
}
|
|
||||||
|
|
||||||
getApiHeaders() {
|
|
||||||
return {
|
|
||||||
"X-Auth-Code": config.host.authCode,
|
|
||||||
"X-Host-Id": config.host.id || this.id,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
parseTemplateDownloadError(error) {
|
|
||||||
const data = error?.response?.data;
|
|
||||||
if (data instanceof ArrayBuffer || Buffer.isBuffer(data)) {
|
|
||||||
try {
|
|
||||||
const parsed = JSON.parse(Buffer.from(data).toString("utf8"));
|
|
||||||
return parsed?.error || error.message;
|
|
||||||
} catch (parseError) {
|
|
||||||
return error.message;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return data?.error || error.message;
|
|
||||||
}
|
|
||||||
|
|
||||||
async renderTemplatePDF(templateData) {
|
async renderTemplatePDF(templateData) {
|
||||||
logger.debug("Rendering template PDF...", templateData);
|
logger.debug("Rendering template PDF...", templateData);
|
||||||
try {
|
return new Promise((resolve, reject) => {
|
||||||
const response = await axios.post(
|
this.socket.emit("renderTemplatePDF", templateData, (result) => {
|
||||||
`${this.getApiUrl()}/documenttemplates/${templateData._id}/download`,
|
if (result && result.error) {
|
||||||
{
|
logger.error("Failed to render template PDF:", result.error);
|
||||||
content: templateData.content,
|
reject(new Error(result.error));
|
||||||
object: templateData.object,
|
} else {
|
||||||
},
|
logger.trace("Template PDF rendered successfully.");
|
||||||
{
|
resolve(result);
|
||||||
params: { type: "pdf" },
|
}
|
||||||
responseType: "arraybuffer",
|
});
|
||||||
headers: this.getApiHeaders(),
|
});
|
||||||
},
|
|
||||||
);
|
|
||||||
logger.trace("Template PDF rendered successfully.");
|
|
||||||
return { pdf: Buffer.from(response.data) };
|
|
||||||
} catch (error) {
|
|
||||||
const message = this.parseTemplateDownloadError(error);
|
|
||||||
logger.error("Failed to render template PDF:", message);
|
|
||||||
throw new Error(message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async renderTemplateJPG(templateData, type = "jpeg") {
|
async renderTemplateJPG(templateData) {
|
||||||
logger.debug(`Rendering template ${type.toUpperCase()}...`, templateData);
|
logger.debug("Rendering template JPG...", templateData);
|
||||||
try {
|
return new Promise((resolve, reject) => {
|
||||||
const response = await axios.post(
|
this.socket.emit("renderTemplateJPG", templateData, (result) => {
|
||||||
`${this.getApiUrl()}/documenttemplates/${templateData._id}/download`,
|
if (result && result.error) {
|
||||||
{
|
logger.error("Failed to render template JPG:", result.error);
|
||||||
content: templateData.content,
|
reject(new Error(result.error));
|
||||||
object: templateData.object,
|
} else {
|
||||||
width: templateData.width,
|
logger.trace("Template JPG rendered successfully.");
|
||||||
},
|
resolve(result);
|
||||||
{
|
}
|
||||||
params: { type },
|
});
|
||||||
responseType: "arraybuffer",
|
});
|
||||||
headers: this.getApiHeaders(),
|
|
||||||
},
|
|
||||||
);
|
|
||||||
const contentType = response.headers["content-type"] || "";
|
|
||||||
if (contentType.includes("application/json")) {
|
|
||||||
const payload = JSON.parse(Buffer.from(response.data).toString("utf8"));
|
|
||||||
logger.trace("Template JPG rendered successfully.");
|
|
||||||
return {
|
|
||||||
images: (payload.images || []).map((image) =>
|
|
||||||
Buffer.from(image, "base64"),
|
|
||||||
),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
logger.trace("Template JPG rendered successfully.");
|
|
||||||
return { images: [Buffer.from(response.data)] };
|
|
||||||
} catch (error) {
|
|
||||||
const message = this.parseTemplateDownloadError(error);
|
|
||||||
logger.error("Failed to render template JPG:", message);
|
|
||||||
throw new Error(message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async subscribeToObjectActions({ objectType, _id }) {
|
async subscribeToObjectActions({ objectType, _id }) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user