2018-03-31 03:30:30 +08:00
|
|
|
import {Injectable} from '@angular/core';
|
|
|
|
import {NetworkService} from '../../model/network/network.service';
|
|
|
|
import {AutoCompleteItem} from '../../../../common/entities/AutoCompleteItem';
|
|
|
|
import {GalleryCacheService} from '../cache.gallery.service';
|
2016-05-04 03:04:57 +08:00
|
|
|
|
|
|
|
@Injectable()
|
2016-05-05 23:51:51 +08:00
|
|
|
export class AutoCompleteService {
|
2016-05-04 03:04:57 +08:00
|
|
|
|
|
|
|
|
2017-07-30 05:39:06 +08:00
|
|
|
constructor(private _networkService: NetworkService,
|
|
|
|
private galleryCacheService: GalleryCacheService) {
|
2017-06-11 04:32:56 +08:00
|
|
|
}
|
2016-05-09 23:04:56 +08:00
|
|
|
|
2017-07-30 05:39:06 +08:00
|
|
|
public async autoComplete(text: string): Promise<Array<AutoCompleteItem>> {
|
|
|
|
let items: Array<AutoCompleteItem> = this.galleryCacheService.getAutoComplete(text);
|
|
|
|
if (items == null) {
|
2018-03-31 03:30:30 +08:00
|
|
|
items = await this._networkService.getJson<Array<AutoCompleteItem>>('/autocomplete/' + text);
|
2017-07-30 05:39:06 +08:00
|
|
|
this.galleryCacheService.setAutoComplete(text, items);
|
|
|
|
}
|
|
|
|
return items;
|
2017-06-11 04:32:56 +08:00
|
|
|
}
|
2016-05-04 03:04:57 +08:00
|
|
|
|
|
|
|
|
|
|
|
}
|