/* eslint-disable @typescript-eslint/member-ordering */
import { Injectable, inject } from '@angular/core';
import { NotificationsService } from '../services/notifications.service';

@Injectable({ providedIn: 'root' })
export class NotificationsFacade {
  private readonly service = inject(NotificationsService);

  readonly settings = this.service.settings;
  readonly unread = this.service.unread;

  initialize(
    ...args: Parameters<NotificationsService['initialize']>
  ): ReturnType<NotificationsService['initialize']> {
    return this.service.initialize(...args);
  }

  syncRoomCatalog(
    ...args: Parameters<NotificationsService['syncRoomCatalog']>
  ): ReturnType<NotificationsService['syncRoomCatalog']> {
    return this.service.syncRoomCatalog(...args);
  }

  hydrateUnreadCounts(
    ...args: Parameters<NotificationsService['hydrateUnreadCounts']>
  ): ReturnType<NotificationsService['hydrateUnreadCounts']> {
    return this.service.hydrateUnreadCounts(...args);
  }

  refreshRoomUnreadFromMessages(
    ...args: Parameters<NotificationsService['refreshRoomUnreadFromMessages']>
  ): ReturnType<NotificationsService['refreshRoomUnreadFromMessages']> {
    return this.service.refreshRoomUnreadFromMessages(...args);
  }

  handleIncomingMessage(
    ...args: Parameters<NotificationsService['handleIncomingMessage']>
  ): ReturnType<NotificationsService['handleIncomingMessage']> {
    return this.service.handleIncomingMessage(...args);
  }

  markCurrentChannelReadIfActive(
    ...args: Parameters<NotificationsService['markCurrentChannelReadIfActive']>
  ): ReturnType<NotificationsService['markCurrentChannelReadIfActive']> {
    return this.service.markCurrentChannelReadIfActive(...args);
  }

  isRoomMuted(
    ...args: Parameters<NotificationsService['isRoomMuted']>
  ): ReturnType<NotificationsService['isRoomMuted']> {
    return this.service.isRoomMuted(...args);
  }

  isChannelMuted(
    ...args: Parameters<NotificationsService['isChannelMuted']>
  ): ReturnType<NotificationsService['isChannelMuted']> {
    return this.service.isChannelMuted(...args);
  }

  roomUnreadCount(
    ...args: Parameters<NotificationsService['roomUnreadCount']>
  ): ReturnType<NotificationsService['roomUnreadCount']> {
    return this.service.roomUnreadCount(...args);
  }

  channelUnreadCount(
    ...args: Parameters<NotificationsService['channelUnreadCount']>
  ): ReturnType<NotificationsService['channelUnreadCount']> {
    return this.service.channelUnreadCount(...args);
  }

  setNotificationsEnabled(
    ...args: Parameters<NotificationsService['setNotificationsEnabled']>
  ): ReturnType<NotificationsService['setNotificationsEnabled']> {
    return this.service.setNotificationsEnabled(...args);
  }

  setShowPreview(
    ...args: Parameters<NotificationsService['setShowPreview']>
  ): ReturnType<NotificationsService['setShowPreview']> {
    return this.service.setShowPreview(...args);
  }

  setRespectBusyStatus(
    ...args: Parameters<NotificationsService['setRespectBusyStatus']>
  ): ReturnType<NotificationsService['setRespectBusyStatus']> {
    return this.service.setRespectBusyStatus(...args);
  }

  setRoomMuted(
    ...args: Parameters<NotificationsService['setRoomMuted']>
  ): ReturnType<NotificationsService['setRoomMuted']> {
    return this.service.setRoomMuted(...args);
  }

  setChannelMuted(
    ...args: Parameters<NotificationsService['setChannelMuted']>
  ): ReturnType<NotificationsService['setChannelMuted']> {
    return this.service.setChannelMuted(...args);
  }
}
