Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/vue3/vuex/src/builder/database/ |
Upload File : |
/** * Bitrix Vuex wrapper * BitrixMobile ApplicationStorage driver for Vuex Builder * * @package bitrix * @subpackage ui * @copyright 2001-2022 Bitrix */ import {md5} from "main.md5"; import {Type} from "main.core"; export class BuilderDatabaseJnSharedStorage { constructor(config = {}): void { this.siteId = config.siteId || 'default'; this.userId = config.userId || 0; this.storage = config.storage || 'default'; this.name = config.name || ''; this.code = (window.md5 || md5)( this.siteId+'/'+ this.userId+'/'+ this.storage+'/'+ this.name ); if (!this.isJnContext() && Type.isUndefined(ApplicationStorage)) { console.error('ApplicationStorage is not defined, load "webcomponent/storage" extension.') } } get(): Promise<object> { return new Promise((resolve) => { if (this.isJnContext()) { const result = Application.sharedStorage.get(this.code); resolve(result? result: null); } else if (!Type.isUndefined(ApplicationStorage)) { ApplicationStorage.get(this.code, null) .then(data => resolve(this.prepareValueAfterGet(JSON.parse(data)))) ; } else { resolve(null); } }); } set(value): Promise<void> { return new Promise((resolve) => { if (this.isJnContext()) { Application.sharedStorage().set( this.code, JSON.stringify(this.prepareValueBeforeSet(value)) ); resolve(); } else if (!Type.isUndefined(ApplicationStorage)) { ApplicationStorage.set( this.code, JSON.stringify(this.prepareValueBeforeSet(value)) ).then(() => resolve()); } else { resolve(); } }); } clear(): Promise<void> { return this.set(null); } /** * @private */ isJnContext(): boolean { return !Type.isUndefined(env); } /** * @private */ prepareValueAfterGet(value): any { if (value instanceof Array) { value = value.map(element => this.prepareValueAfterGet(element)); } else if (value instanceof Date) { } else if (Type.isObjectLike(value)) { for (const index in value) { if (value.hasOwnProperty(index)) { value[index] = this.prepareValueAfterGet(value[index]); } } } else if (Type.isString(value)) { if (value.startsWith('#DT#')) { value = new Date(value.substring(4)); } } return value; } /** * @private */ prepareValueBeforeSet(value): any { if (value instanceof Array) { value = value.map(element => this.prepareValueBeforeSet(element)); } else if (value instanceof Date) { value = '#DT#'+value.toISOString(); } else if (Type.isObjectLike(value)) { for (const index in value) { if (value.hasOwnProperty(index)) { value[index] = this.prepareValueBeforeSet(value[index]); } } } return value; } }