Не удается удалить файл из кэша в Safari

В приложении Angular 6 я использую Cache API, чтобы иметь возможность хранить и удалять файлы MP3.

В Safari при попытке удалить файл он не удаляется, и я получаю сообщение об ошибке "Превышена квота" (в Chrome он работает хорошо).

Я создал Пример Angular Firebase App, чтобы вы могли увидеть проблему.

Пример хранилища кода приложения

Шаги, чтобы воспроизвести проблему:

  1. Откройте Safari (мобильный или на компьютере Mac)
  2. Нажмите на кнопку "Сохранить файл"
  3. Нажмите "Удалить файл" (файл должен быть удален, но это не так)
  4. Снова нажмите "Сохранить файл", и вы получите сообщение "Превышена квота".

Может кто-нибудь помочь мне увидеть, что не так с моим кодом?

Метод, который я вызываю для удаления файла, это removeFile ()

app.component.ts

import { Component, OnInit } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {

  // Omitted ...

  saveFile() {
    this.resetValues();  
    caches.open(this.id).then((cache) => {
      console.log("open complete", cache);
      return fetch(this.url).then((response) => {
        console.log("fetch complete", response);
        return cache.put(this.url, response).then((data) => {
          console.log("cache complete", data)
          this.status = 'File saved';
        });
      })
    }).catch((error: Error) => {
      this.errorMessage = error.message;
      console.error('Error caching file!', error);
    });
  }

  removeFile() {
    this.resetValues();
    caches.delete(this.id).then((cacheDeleted) => {
      console.log("File removed from cache:", cacheDeleted);
      this.status = 'File removed';
    }).catch((error: Error) => {
      this.errorMessage = error.message;
      console.error('Error removing file from cache :(', error);
    });
  }

}

package.json

{
  // Omitted ...
  "dependencies": {
    "@angular/animations": "^6.0.0",
    "@angular/common": "^6.0.0",
    "@angular/compiler": "^6.0.0",
    "@angular/core": "^6.0.0",
    "@angular/forms": "^6.0.0",
    "@angular/http": "^6.0.0",
    "@angular/platform-browser": "^6.0.0",
    "@angular/platform-browser-dynamic": "^6.0.0",
    "@angular/router": "^6.0.0",
    "core-js": "^2.5.4",
    "rxjs": "^6.0.0",
    "zone.js": "^0.8.26"
  },
  "devDependencies": {
    "@angular/compiler-cli": "^6.0.0",
    "@angular-devkit/build-angular": "~0.6.1",
    "typescript": "~2.7.2",
    "@angular/cli": "~6.0.1",
    "@angular/language-service": "^6.0.0",
    // Omitted ...
  }
}

0 ответов

Другие вопросы по тегам