diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 3ccc4627e1..229c741310 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -65,6 +65,7 @@ import { ThemeWatcher } from "../../theme"; import { storeRoomAliasInCache } from '../../RoomAliasCache'; import { defer } from "../../utils/promise"; import ToastStore from "../../stores/ToastStore"; +import * as StorageManager from "../../utils/StorageManager"; /** constants for MatrixChat.state.view */ export const VIEWS = { @@ -1193,6 +1194,8 @@ export default createReactClass({ } else { this._showScreenAfterLogin(); } + + StorageManager.tryPersistStorage(); }, _showScreenAfterLogin: function() { diff --git a/src/rageshake/submit-rageshake.js b/src/rageshake/submit-rageshake.js index 091f64bf93..b17dc62168 100644 --- a/src/rageshake/submit-rageshake.js +++ b/src/rageshake/submit-rageshake.js @@ -106,6 +106,25 @@ export default async function sendBugReport(bugReportEndpoint, opts) { body.append('enabled_labs', enabledLabs.join(', ')); } + // add storage persistence/quota information + if (navigator.storage && navigator.storage.persisted) { + try { + body.append("storageManager_persisted", await navigator.storage.persisted()); + } catch (e) {} + } + if (navigator.storage && navigator.storage.estimate) { + try { + const estimate = await navigator.storage.estimate(); + body.append("storageManager_quota", estimate.quota); + body.append("storageManager_usage", estimate.usage); + if (estimate.usageDetails) { + Object.keys(estimate.usageDetails).forEach(k => { + body.append(`storageManager_usage_${k}`, estimate.usageDetails[k]); + }); + } + } catch (e) {} + } + if (opts.sendLogs) { progressCallback(_t("Collecting logs")); const logs = await rageshake.getLogsForReport(); diff --git a/src/utils/StorageManager.js b/src/utils/StorageManager.js index c5a9f7aeed..4ed118da8a 100644 --- a/src/utils/StorageManager.js +++ b/src/utils/StorageManager.js @@ -43,6 +43,16 @@ function track(action) { Analytics.trackEvent("StorageManager", action); } +export function tryPersistStorage() { + if (navigator.storage && navigator.storage.persist) { + navigator.storage.persist().then(persistent => { + console.log("StorageManager: Persistent?", persistent); + }); + } else { + console.log("StorageManager: Persistence unsupported"); + } +} + export async function checkConsistency() { log("Checking storage consistency"); log(`Local storage supported? ${!!localStorage}`);