// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import * as issueV0 from './constants-issueV0.js';
import * as users from './constants-users.js';
import 'shared/typedef.js';

/** @type {string} */
export const NAME = 'hotlists/1234';

/** @type {Hotlist} */
export const HOTLIST = Object.freeze({
  name: NAME,
  displayName: 'Hotlist-Name',
  owner: users.NAME,
  editors: [users.NAME_2],
  summary: 'Summary',
  description: 'Description',
  defaultColumns: [{column: 'Rank'}, {column: 'ID'}, {column: 'Summary'}],
  hotlistPrivacy: 'PUBLIC',
});

export const HOTLIST_ITEM_NAME = NAME + '/items/56';

/** @type {HotlistItem} */
export const HOTLIST_ITEM = Object.freeze({
  name: HOTLIST_ITEM_NAME,
  issue: issueV0.NAME,
  // rank: The API excludes the rank field if it's 0.
  adder: users.NAME,
  createTime: '2020-01-01T12:00:00Z',
});

/** @type {HotlistIssue} */
export const HOTLIST_ISSUE = Object.freeze({
  ...issueV0.ISSUE, ...HOTLIST_ITEM, adder: users.USER,
});

/** @type {HotlistItem} */
export const HOTLIST_ITEM_OTHER_PROJECT = Object.freeze({
  name: NAME + '/items/78',
  issue: issueV0.NAME_OTHER_PROJECT,
  rank: 1,
  adder: users.NAME,
  createTime: '2020-01-01T12:00:00Z',
});

/** @type {HotlistIssue} */
export const HOTLIST_ISSUE_OTHER_PROJECT = Object.freeze({
  ...issueV0.ISSUE_OTHER_PROJECT,
  ...HOTLIST_ITEM_OTHER_PROJECT,
  adder: users.USER,
});

/** @type {HotlistItem} */
export const HOTLIST_ITEM_CLOSED = Object.freeze({
  name: NAME + '/items/90',
  issue: issueV0.NAME_CLOSED,
  rank: 2,
  adder: users.NAME,
  createTime: '2020-01-01T12:00:00Z',
});

/** @type {HotlistIssue} */
export const HOTLIST_ISSUE_CLOSED = Object.freeze({
  ...issueV0.ISSUE_CLOSED, ...HOTLIST_ITEM_CLOSED, adder: users.USER,
});

/** @type {Object<string, Hotlist>} */
export const BY_NAME = Object.freeze({[NAME]: HOTLIST});

/** @type {Object<string, Array<HotlistItem>>} */
export const HOTLIST_ITEMS = Object.freeze({
  [NAME]: [HOTLIST_ITEM],
});
