@aws-amplify/core
Version:
Core category of aws-amplify
1 lines • 7.13 kB
Source Map (JSON)
{"version":3,"file":"createQueuedStorage.native.mjs","sources":["../../../../src/utils/queuedStorage/createQueuedStorage.native.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { loadAsyncStorage } from '@aws-amplify/react-native';\nimport { DATABASE_NAME } from './constants';\nimport { getAddItemBytesSize } from './getAddItemBytesSize';\nexport const keyPrefix = `@${DATABASE_NAME}`;\nexport const createQueuedStorage = () => {\n let currentBytesSize = 0;\n let error;\n const openDBPromise = new Promise((resolve, _reject) => {\n try {\n const asyncStorage = loadAsyncStorage();\n getQueuedItemKeys(asyncStorage)\n .then(keys => getQueuedItems(asyncStorage, keys))\n .then(items => {\n for (const item of items) {\n currentBytesSize += item.bytesSize;\n }\n return undefined;\n })\n .then(__ => {\n resolve(asyncStorage);\n });\n }\n catch (err) {\n error = err;\n resolve(undefined);\n }\n });\n const getAsyncStorage = async () => {\n const as = await openDBPromise;\n if (!as) {\n throw error;\n }\n return as;\n };\n const _peek = async (n) => {\n const as = await getAsyncStorage();\n const queuedItemKeys = await getQueuedItemKeys(as, true);\n const keysToGetValues = queuedItemKeys.slice(0, n);\n return getQueuedItems(as, keysToGetValues);\n };\n return {\n async add(item, { dequeueBeforeEnqueue } = { dequeueBeforeEnqueue: false }) {\n if (dequeueBeforeEnqueue) {\n const itemsToDelete = await this.peek(1);\n await this.delete(itemsToDelete);\n }\n const as = await getAsyncStorage();\n const itemBytesSize = getAddItemBytesSize(item);\n const key = `${keyPrefix}_${Date.now()}`;\n const queuedItem = {\n ...item,\n bytesSize: itemBytesSize,\n key,\n };\n await as.setItem(key, JSON.stringify(queuedItem));\n currentBytesSize += itemBytesSize;\n },\n async peek(n) {\n return _peek(n);\n },\n async peekAll() {\n return _peek();\n },\n async delete(items) {\n const as = await getAsyncStorage();\n const keysToDelete = items\n .map(item => item.key)\n .filter((id) => id !== undefined);\n await as.multiRemove(keysToDelete);\n for (const item of items) {\n currentBytesSize -= item.bytesSize;\n }\n },\n async clear() {\n const as = await getAsyncStorage();\n const keysToDelete = await getQueuedItemKeys(as);\n await as.multiRemove(keysToDelete);\n currentBytesSize = 0;\n },\n isFull(maxBytesSizeInMiB) {\n return currentBytesSize >= maxBytesSizeInMiB * 1024 * 1024;\n },\n };\n};\nconst getQueuedItemKeys = async (as, sortKeys = false) => {\n const keys = (await as.getAllKeys()).filter(key => key.startsWith(keyPrefix));\n return sortKeys\n ? keys.sort((a, b) => {\n const timestampA = a.split('_').pop();\n const timestampB = b.split('_').pop();\n return parseInt(timestampA) - parseInt(timestampB);\n })\n : keys;\n};\nconst getQueuedItems = async (as, keys) => (await as.multiGet(keys))\n .filter((item) => item[1] !== null)\n .map(([_, value]) => JSON.parse(value));\n"],"names":[],"mappings":"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"}