import type { NgGqlConfig } from '../models/ng-gql-config/ng-gql-config'; import * as i0 from "@angular/core"; export type StorageOrderTokenEvent = StorageOrderTokenSetOrderId | StorageOrderTokenRemoveOrderId; export interface StorageOrderTokenSetOrderId { event: 'setOrderId'; data: { orderId: string; alternativeToken?: string; }; } export interface StorageOrderTokenRemoveOrderId { event: 'removeOrderId'; newOrderId?: string; } /** * Класс, в который вынесена логика работы с хранилищем localStorage. * Ключевая необходимость использования этого класса вместо работы с хранилищем напрямую - методы StorageWrapper также инициируют отправку * браузерного события 'storage' в объекте window В ТЕКУЩЕЙ ВКЛАДКЕ БРАУЗЕРА. * Это важно, поскольку стандартные методы работы со Storage иницируют StorageEvent только для ДРУГИХ ВКЛАДОК браузера и не происходят в самой * вкладке, где произошли изменения. */ export declare class NqGqlLocalStorageWrapper { private _config; private _orderIdFactoryFn; /** * Поток для изменения "на лету" токена, с которым в localStorage сохраняется id заказа. * Необходим для реализации на сайте "мультикорзины" - нескольких параллельных корзин, между которыми пользователь может переключаться при переходе по страницам сайта. */ private readonly _storageOrderIdToken$; private __storageActionBus$; private readonly _storageActionBus$; private readonly _storageActionBusSubscription$; readonly storageOrderIdToken$: import("rxjs").Observable; constructor(_config: NgGqlConfig, _orderIdFactoryFn: () => string); /** * @method setOrderId() * @param orderId - id Заказа, который требуется сохранить в localStorage с ключом @interface `NgGqlConfig.orderIdStorageToken` (по умолчанию -'$\{ window.location.host \}-orderId'). * Id хранится в виде обьекта, содержащего помимо савмого id также временную метку создания записи (в виде unix-timestamp). * Старые orderId не используются - метод вернет `undefined`, в API будет запрошен новый заказ, а данные в localStorage обновятся. * Значение считается устаревшим, если с момента его добавления прошло больше времени, чем указано в `NgGqlConfig.obsolescence` (по умолчанию - 14 дней). * @param storageOrderIdToken - необязательный альтернативный токен для сохранения orderId в localstorage. * Также все последующие операции в localStorage данными заказа начнут использовать этот токен, т.к. обновится внутренняя подписка информации об используемом токене. */ setOrderId(orderId: string, storageOrderIdToken?: string): void; /** * @method removeOrderId() * Удаляет сохраненный в localStorage id заказа. */ removeOrderId(newOrderId?: string): void; startStorageEventFactory(key: string): StorageEvent; /** * @method getOrderId() * @returns Возвращает orderId, сохраненный ранее в localStorage с ключом @interface `NgGqlConfig.orderIdStorageToken` (по умолчанию -'$\{ window.location.host \}-orderId'). * Id хранится в виде обьекта, содержащего помимо савмого id также временную метку создания записи (в виде unix-timestamp). * Старые orderId не используются - метод вернет `undefined`, в API будет запрошен новый заказ, а данные в localStorage обновятся. * Значение считается устаревшим, если с момента его добавления прошло больше времени, чем указано в `NgGqlConfig.obsolescence` (по умолчанию - 14 дней). */ getOrderId(storageOrderIdToken: string, storageOrderId?: string, generateNew?: boolean): string; /** * @method updateStorageOrderIdToken() * Реализация "мульткорзины". * Предназначен для переключения между корзинами, каждая из которых хранятся в localStorage со своим токеном. * Предназначен для переключения потоков с * @param newToken */ updateStorageOrderIdToken(newToken: string): void; destroy(): void; private _notifyStorageUpdate; /** * * @param key ключ, с которым данные будут записаны в Storage * @param orderId сохраняемое значение * @param emitEvent требуется ли создавать StorageEvent для подписчиков об изменении значения */ private _setToStorage; private _removeFromStorage; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; }