File

src/app/navigation/navigation.service.ts

Index

Properties
Methods
Accessors

Constructor

constructor(http: HttpClient)
Parameters :
Name Type Optional
http HttpClient No

Methods

getLocalNavigations
getLocalNavigations()
Returns : any
select
select()
Returns : any
selectCategories
selectCategories()
Returns : any
syncCategories
syncCategories()
Returns : any
syncGithubNavigations
syncGithubNavigations()

从github中获取数据

Returns : any
syncLocalNavigaitons
syncLocalNavigaitons()
Returns : void
syncNavigations
syncNavigations(topicId: any, page: any)
Parameters :
Name Type Optional Default value
topicId any No ''
page any No 1
Returns : any
update
update(id, item)
Parameters :
Name Optional
id No
item No
Returns : void
updateLocalNavigation
updateLocalNavigation(id, item)
Parameters :
Name Optional
id No
item No
Returns : void

Properties

Private apiUrl
Default value : environment.navigationApi

Accessors

navigations
getnavigations()
categories
getcategories()
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { environment } from '../../environments/environment';
import { BehaviorSubject } from 'rxjs';
import { localStorageDb } from './localStorageDb';

@Injectable()
export class NavigationService {
  private apiUrl = environment.navigationApi;

  get navigations() {
    return new localStorageDb('nav');
  }

  get categories() {
    return new localStorageDb('nav_category');
  }

  constructor(private http: HttpClient) {}

  syncLocalNavigaitons() {
    this.syncGithubNavigations().subscribe(res => {
      this.navigations.add(res);
    });
  }

  getLocalNavigations() {
    if (!this.categories.hasCollections()) {
      this.syncNavigations().subscribe(res => {
        this.navigations.add(res['data']);
      });
    }

    return this.navigations.select();
  }

  updateLocalNavigation(id, item) {
    this.navigations.where({ id }).update(item);
  }

  select() {
    return this.getLocalNavigations();
  }

  update(id, item) {
    this.updateLocalNavigation(id, item);
  }

  selectCategories() {
    if (!this.categories.hasCollections()) {
      this.syncCategories().subscribe(res => {
        this.categories.add(res['data']);
      });
    }

    return this.categories.select();
  }

  syncNavigations(topicId: any = '', page: any = 1) {
    let url = `${this.apiUrl}/links/?topicId=${topicId}&page=${page}`;
    if (!environment.production) {
      url = `${this.apiUrl}/links${topicId}${page}.json`;
    }

    return this.http.get(url);
  }

  syncCategories() {
    let url = `${this.apiUrl}/topic`;
    if (!environment.production) {
      url = `${this.apiUrl}/topic.json`;
    }

    return this.http.get(url);
  }

  /**
   * 从github中获取数据
   */
  syncGithubNavigations() {
    const url =
      'https://gist.githubusercontent.com/stbui/f68385d17d5d10e8db58f749297e68fe/raw/61ced92c95c17bf8acb6220255662cdc53cad6fd/navigation.json';

    return this.http.get(url);
  }
}

result-matching ""

    No results matching ""