Могу ли я удалить элемент из localStorage для каждого пользователя? - PullRequest
0 голосов
/ 11 декабря 2019

Когда я делаю GET-запрос на получение логотипа, я сохраняю логотип как JSON в LocalStorage, чтобы я мог получить его оттуда в следующий раз, не выполняя еще один http-запрос:

  getLogo(): Observable<Picture> {
    const cachedLogoString: string = localStorage.getItem('logo');
    if (cachedLogoString) { // if cached, return the cached logo
      const cachedLogo: Picture = JSON.parse(cachedLogoString);
      return Observable.of(cachedLogo);
    }

    // if not cached, do the request and cache it
    const logoObservable: Observable<Picture> = this.http.get<Picture>(BASE_URL + 'logo', this.authService.setHeaders('application/json'))
      .pipe(
        share(),
        catchError(this.handleService.error.bind(this))
      );
    this.cacheLogo(logoObservable);
    return logoObservable;
  }

  private cacheLogo(logoObservable: Observable<Picture>): void {
    logoObservable.subscribe(logoToBeCached => {
      localStorage.setItem('logo', JSON.stringify(logoToBeCached));
    });
  }

Это работает нормально, проблема у меня в том, что я не уверен, что я должен делать, когда обновляю логотип:

  updatePicture(picture: Picture): Observable<Picture> {
    return this.http.put<Picture>(BASE_URL + picture.id, picture, this.authService.setHeaders('application/json'))
      .pipe(
        tap(() => this.handleService.success('Bild bearbeitet')),
        catchError(this.handleService.error.bind(this))
      );
  }

Мне бы пришлось удалить логотип из localStorage после его обновления, чтобы получитьновый логотип во время следующего запроса GET вместо получения старого от localStorage. Я мог бы сделать это с localStorage.remove('logo'). Но проблема в том, что это приведет к удалению только логотипа из локального хранилища того человека, который делает это обновление. Любой другой человек все еще имеет старый логотип в localStorage и не знает, что он был обновлен.

Могу ли я здесь что-нибудь сделать? Я не могу придумать, каким образом можно глобально удалить логотип из каждого локального хранилища.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...