/**
 * Widget Analytics Tracker (ファサード)
 *
 * pocxr 本番の `widget-analytics` (session/messages/events + beacon) REST 実装は
 * 全て削除し、実体は `ns/ns-analytics.js` の `NsAnalytics` に委譲する
 * (計画書 §1.2.2 / §3.2(5))。クラス名・メソッド名は呼び出し元
 * (`widget-app-persistent.js`) を無改変にするため維持する。
 */

import { NsAnalytics } from "../ns/ns-analytics.js";

export class AnalyticsTracker {
  /**
   * @param {object} [_options] - pocxr 互換の引数 (apiBase/apiKey/tenantId) は
   *   NS 実装では不要なため無視する。
   */
  constructor(_options = {}) {
    this._impl = new NsAnalytics();
  }

  get sessionId() {
    return this._impl.sid;
  }

  async startSession(args) {
    return this._impl.startSession(args);
  }

  async endSession() {
    return this._impl.endSession();
  }

  trackImpression(args) {
    return this._impl.trackImpression(args);
  }

  async recordMessage(args) {
    return this._impl.recordMessage(args);
  }

  trackEvent(eventType, eventData, pageUrl) {
    return this._impl.trackEvent(eventType, eventData, pageUrl);
  }

  trackModeSwitch(fromMode, toMode) {
    return this._impl.trackModeSwitch(fromMode, toMode);
  }

  trackNavigation(url, title) {
    return this._impl.trackNavigation(url, title);
  }

  trackQuickAction(actionText) {
    return this._impl.trackQuickAction(actionText);
  }

  trackError(errorMessage, errorType) {
    return this._impl.trackError(errorMessage, errorType);
  }

  async _flushEvents() {
    return this._impl._flushEvents();
  }
}
