All files / src/dao AutocompleteDAO.ts

82.35% Statements 14/17
100% Branches 0/0
100% Functions 5/5
81.25% Lines 13/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 502x   2x   2x   2x                 2x   1x     1x   1x   1x                       1x         1x   1x   2x        
import { AbstractDAO } from './AbstractDAO';
 
import { TwitarrHTTPOptions } from '../api/TwitarrHTTPOptions';
 
import { User } from '../model/User';
 
export class AutocompleteDAO extends AbstractDAO {
  /**
   * Retrieve a list of hashtags that match the given query.
   */
  public async hashtags(query: string) {
    if (!query) {
      return [];
    }
 
    const q = query.replace(/^\#/, '');
    if (q.length < 3) {
      return [];
    }
 
    return this.http
      .get('/api/v2/hashtag/ac/' + q)
      .then(result => this.handleErrors(result))
      .then(data => {
        return data.values as string[];
      });
  }
 
  /**
   * Retrieve a list of users that match the given query.
   */
  public async users(query: string) {
    if (!query) {
      return [];
    }
 
    const q = query.replace(/^\#/, '');
    if (q.length < 3) {
      return [];
    }
 
    return this.http
      .get('/api/v2/user/ac/' + q, new TwitarrHTTPOptions().withParameter('app', 'plain'))
      .then(result => this.handleErrors(result))
      .then(data => {
        return data.users.map(user => User.fromRest(user));
      });
  }
}