changes
This commit is contained in:
69
fusion_poynt/static/src/js/poynt_wizard_poll.js
Normal file
69
fusion_poynt/static/src/js/poynt_wizard_poll.js
Normal file
@@ -0,0 +1,69 @@
|
||||
/** @odoo-module **/
|
||||
|
||||
import { registry } from "@web/core/registry";
|
||||
import { useService } from "@web/core/utils/hooks";
|
||||
import { Component, onMounted, onWillUnmount, useState } from "@odoo/owl";
|
||||
|
||||
class PoyntPollAction extends Component {
|
||||
static template = "fusion_poynt.PoyntPollAction";
|
||||
static props = ["*"];
|
||||
|
||||
setup() {
|
||||
this.orm = useService("orm");
|
||||
this.actionService = useService("action");
|
||||
this.state = useState({ seconds: 0, message: "" });
|
||||
|
||||
const wizardId = this.props.action?.params?.wizard_id;
|
||||
this.wizardId = wizardId;
|
||||
|
||||
onMounted(() => {
|
||||
if (!this.wizardId) return;
|
||||
this._tickTimer = setInterval(() => this.state.seconds++, 1000);
|
||||
this._pollTimer = setInterval(() => this._poll(), 5000);
|
||||
});
|
||||
|
||||
onWillUnmount(() => this._stop());
|
||||
}
|
||||
|
||||
_stop() {
|
||||
if (this._tickTimer) { clearInterval(this._tickTimer); this._tickTimer = null; }
|
||||
if (this._pollTimer) { clearInterval(this._pollTimer); this._pollTimer = null; }
|
||||
}
|
||||
|
||||
async _poll() {
|
||||
if (!this.wizardId) { this._stop(); return; }
|
||||
try {
|
||||
const result = await this.orm.call(
|
||||
"poynt.payment.wizard", "action_check_status", [[this.wizardId]],
|
||||
);
|
||||
if (result && result.type) {
|
||||
this._stop();
|
||||
this.actionService.doAction(result, { clearBreadcrumbs: true });
|
||||
}
|
||||
} catch (e) {
|
||||
this._stop();
|
||||
this.state.message = "Polling stopped due to an error. Use Check Now to retry.";
|
||||
}
|
||||
}
|
||||
|
||||
async onManualCheck() {
|
||||
this.state.message = "";
|
||||
if (!this._pollTimer) {
|
||||
this._pollTimer = setInterval(() => this._poll(), 5000);
|
||||
this._tickTimer = setInterval(() => this.state.seconds++, 1000);
|
||||
}
|
||||
await this._poll();
|
||||
}
|
||||
|
||||
async onCancel() {
|
||||
this._stop();
|
||||
try {
|
||||
await this.orm.call(
|
||||
"poynt.payment.wizard", "action_cancel_payment", [[this.wizardId]],
|
||||
);
|
||||
} catch { /* ignore */ }
|
||||
this.actionService.doAction({ type: "ir.actions.act_window_close" });
|
||||
}
|
||||
}
|
||||
|
||||
registry.category("actions").add("poynt_poll_action", PoyntPollAction);
|
||||
Reference in New Issue
Block a user