В приложении Angular 6 я использую Cache API , чтобы иметь возможность хранить и удалять файлы MP3.
В Safari при попытке удалить файл, который он не 'я получаю сообщение об ошибке «Превышена квота» (в Chrome он работает хорошо).
Я создал Пример Angular Firebase App , чтобы вы могли увидеть проблему.
Пример хранилища кода приложения
Действия по воспроизведению проблемы:
- Откройте Safari (для мобильных устройств или на компьютере Mac))
- Нажмите кнопку «Сохранить файл»
- Нажмите «Удалить файл» (файл должен быть удален, но это не так)
- Нажмите «Сохранить файл» еще рази вы получите сообщение «Превышена квота».
Может ли кто-нибудь помочь мне понять, что не так с моим кодом?
Метод, который я вызываю для удаления файла: 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 ...
}
}