@apicart/js-utils
Version:
A small set of useful utilities for easier development
70 lines (53 loc) • 1.54 kB
text/typescript
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();