import {
  createEmptyStateResource,
  createStateResource,
  getEmbeddedResources,
  isNotNil,
  StateResource,
} from '@alfa-client/tech-shared';
import { SettingListLinkRel } from './admin-settings.linkrel';
import { SettingItemResource, SettingListResource, SettingName } from './admin-settings.model';
import { PostfachResource } from './postfach/postfach.model';

export function getPostfachResource(
  settingsListResource: StateResource<SettingListResource>,
): StateResource<PostfachResource> {
  const entries: SettingItemResource[] = getEmbeddedResources(
    settingsListResource,
    SettingListLinkRel.LIST,
  );
  const postfachSettingItemResource: SettingItemResource = entries.find(isPostfachSettingItem);
  return isNotNil(postfachSettingItemResource) ?
      createStateResource(postfachSettingItemResource as PostfachResource)
    : createEmptyStateResource();
}

function isPostfachSettingItem(item: SettingItemResource): boolean {
  return item.name === SettingName.POSTFACH;
}