Files
Odoo-Modules/fusion_schedule/static/src/views/fusion_calendar_controller.js
gsinghpal e56974d46f update
2026-03-16 08:14:56 -04:00

75 lines
2.1 KiB
JavaScript

/** @odoo-module */
import { AttendeeCalendarController } from "@calendar/views/attendee_calendar/attendee_calendar_controller";
import { patch } from "@web/core/utils/patch";
import { useService } from "@web/core/utils/hooks";
import { useState, onWillStart } from "@odoo/owl";
patch(AttendeeCalendarController.prototype, {
setup() {
super.setup(...arguments);
this.orm = useService("orm");
this.notification = useService("notification");
this.fusionState = useState({
accounts: [],
syncing: false,
});
onWillStart(async () => {
await this._loadFusionAccounts();
});
},
get fusionAccounts() {
return this.fusionState.accounts;
},
get fusionSyncing() {
return this.fusionState.syncing;
},
async _loadFusionAccounts() {
try {
const accounts = await this.orm.call(
"fusion.calendar.account",
"get_user_accounts_status",
[],
);
this.fusionState.accounts = accounts;
} catch {
this.fusionState.accounts = [];
}
},
async onFusionSyncNow() {
this.fusionState.syncing = true;
try {
const result = await this.orm.call(
"fusion.calendar.account",
"sync_current_user",
[],
);
if (result.success) {
this.notification.add(
result.message || "Calendar synced successfully.",
{ type: "success" },
);
await this._loadFusionAccounts();
await this.model.load();
this.render(true);
} else {
this.notification.add(
result.error || "Sync failed.",
{ type: "danger" },
);
}
} catch (e) {
this.notification.add(
"Sync error: " + (e.message || "Unknown error"),
{ type: "danger" },
);
} finally {
this.fusionState.syncing = false;
}
},
});