import { BridgePlugin } from '../bridge';
import { get } from 'para-utils';

interface IContactItem {
  contactName: string;
  mobile: string;
}

interface IGetSelectedContactResult {
  contactList: IContactItem[];
}

export class GetSelectedContact<K> extends BridgePlugin<void, K> {

  protected get ntvPluginName() {
    return '_ntv_user_get_selected_contact';
  }
  protected get availableMinVersion() {
    return '1.0.0';
  }
  protected bridgeExecChrome(pluginName?: string | undefined): void {
    // 可针对不同运行环境实现特定的调用逻辑来MOCK，弥补平台差异性.
    throw new Error('GetSelectedContact() 未针对当前环境实现');
  }
}
/**
 * 打开联系人列表，选择特定联系人，返回这个联系人的名字+手机号
 * @returns IContactItem
 */
export const getSelectedContact = () => {
  return new GetSelectedContact<IGetSelectedContactResult>().invokeOnce().then(result => {
    const contacts = get(result.cbData, 'contactList', []);
    return contacts.length ? contacts[0] as IContactItem : null;
  });
}