mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-11-03 20:48:07 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* global axios */
 | 
						|
import ApiClient from './ApiClient';
 | 
						|
 | 
						|
export const buildContactParams = (page, sortAttr, label, search) => {
 | 
						|
  let params = `page=${page}&sort=${sortAttr}`;
 | 
						|
  if (search) {
 | 
						|
    params = `${params}&q=${search}`;
 | 
						|
  }
 | 
						|
  if (label) {
 | 
						|
    params = `${params}&labels[]=${label}`;
 | 
						|
  }
 | 
						|
  return params;
 | 
						|
};
 | 
						|
 | 
						|
class ContactAPI extends ApiClient {
 | 
						|
  constructor() {
 | 
						|
    super('contacts', { accountScoped: true });
 | 
						|
  }
 | 
						|
 | 
						|
  get(page, sortAttr = 'name', label = '') {
 | 
						|
    let requestURL = `${this.url}?${buildContactParams(
 | 
						|
      page,
 | 
						|
      sortAttr,
 | 
						|
      label,
 | 
						|
      ''
 | 
						|
    )}`;
 | 
						|
    return axios.get(requestURL);
 | 
						|
  }
 | 
						|
 | 
						|
  getConversations(contactId) {
 | 
						|
    return axios.get(`${this.url}/${contactId}/conversations`);
 | 
						|
  }
 | 
						|
 | 
						|
  getContactableInboxes(contactId) {
 | 
						|
    return axios.get(`${this.url}/${contactId}/contactable_inboxes`);
 | 
						|
  }
 | 
						|
 | 
						|
  getContactLabels(contactId) {
 | 
						|
    return axios.get(`${this.url}/${contactId}/labels`);
 | 
						|
  }
 | 
						|
 | 
						|
  updateContactLabels(contactId, labels) {
 | 
						|
    return axios.post(`${this.url}/${contactId}/labels`, { labels });
 | 
						|
  }
 | 
						|
 | 
						|
  search(search = '', page = 1, sortAttr = 'name', label = '') {
 | 
						|
    let requestURL = `${this.url}/search?${buildContactParams(
 | 
						|
      page,
 | 
						|
      sortAttr,
 | 
						|
      label,
 | 
						|
      search
 | 
						|
    )}`;
 | 
						|
    return axios.get(requestURL);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
export default new ContactAPI();
 |