UNPKG

@apicart/js-utils

Version:

A small set of useful utilities for easier development

70 lines (53 loc) 1.54 kB
import { Json, LocalStorage, Objects, Validators, Loops } from '.'; class FlashMessages { private readonly STORAGE_KEY: string = 'utils_flash_messages' public addMessage(content: any, type: string | null = null): this { type = type || 'info'; const flashMessagesItems = this.getMessages(); if (!(type in flashMessagesItems)) { flashMessagesItems[type] = []; } flashMessagesItems[type].push(content); LocalStorage.setItem(this.STORAGE_KEY, flashMessagesItems); return this; } public getMessages(): Record<string, any> { return LocalStorage.getItem(this.STORAGE_KEY); } public hasMessages(type: string | null = null): boolean { const messages = this.getMessages(); const messagesByType = type ? Objects.find(messages, type) : messages; return Validators.isEmpty(messagesByType); } public processMessages(callback: Function, type: string | null = null): this { const messages: Record<string, any> = this.getMessages(); if (type && Objects.keyExists(messages, type)) { Loops.forEach(messages[type], function (message: any) { callback(message, type); }); } else if (Validators.isEmpty(messages)) { Loops.forEach(messages, function (messagesQueue: [], messagesType: string) { if (Validators.isEmpty(messagesQueue)) { return; } Loops.forEach(messagesQueue, function (message: any) { callback(message, messagesType); }); }); } localStorage.setItem(this.STORAGE_KEY, Json.stringify({})); return this; } } export default new FlashMessages();