@betarena/ad-engine
Version:
Betarena ad-engine widget
132 lines (113 loc) • 4.64 kB
text/typescript
// ╭──────────────────────────────────────────────────────────────────────────────────╮
// │ 📌 High Order Component Overview │
// ┣──────────────────────────────────────────────────────────────────────────────────┫
// │ ➤ Internal Svelte Code Format :|: V.8.0 │
// │ ➤ Status :|: 🔒 LOCKED │
// │ ➤ Author(s) :|: @migbash │
// ┣──────────────────────────────────────────────────────────────────────────────────┫
// │ 📝 Description │
// ┣──────────────────────────────────────────────────────────────────────────────────┫
// │ > Client 'Svelte/Store' │
// │ > Main Scores Platform Admin Session ('Ephermal') Store │
// ╰──────────────────────────────────────────────────────────────────────────────────╯
/* eslint-disable max-len */
// #region ➤ 📦 Package Imports
import { writable } from 'svelte/store';
// #endregion ➤ 📦 Package Imports
// #region ➤ 📌 VARIABLES
const
/**
* @description
* 📝 store object instance
*/
storeObject: IAdminControl
= {
admin: false,
numberOfAdvertsActive: 0
}
;
// #endregion ➤ 📌 VARIABLES
// #region ➤ 🛠️ METHODS
/**
* @summary
* @author
* @description
* @returns
*/
function createLocalStore
(
)
{
const
// ╭─────
// │ NOTE: |:| 📣 default 'svelte/store' exports.
// ╰─────
{
subscribe,
set,
update
} = writable
(
storeObject
),
/**
* @description
* 📣 Complementary 'store' added methods.
*/
methods
= {
// ╭──────────────────────────────────────────────────────────────────────────────────╮
// │ 📣 Main Logic │
// ╰──────────────────────────────────────────────────────────────────────────────────╯
/**
* @author
* @migbash
* @summary
* - 🔹 HELPER
* - IMPORTANT
* @description
* 📣 Update **target** `list` data of target `properties` to update.
* @param { [IAdminDataProp, any][] } data
* 💠 **[required]** Target data to update.
* @return { void }
*/
updateData:
(
data: [IAdminDataProp, any][]
): void =>
{
for (const iterator of data)
{
const
/**
* @description
*/
dataTarget = iterator[0],
/**
* @description
*/
dataPoint = iterator[1]
;
if (dataTarget == 'admin')
storeObject.admin = dataPoint;
else if (dataTarget == 'numberOfAdvertsActive')
storeObject.numberOfAdvertsActive += 1;
;
}
set
(
storeObject
);
return;
},
}
;
return {
subscribe,
set,
update,
...methods
};
}
// #endregion ➤ 🛠️ METHODS
export const storeAdmin = createLocalStore();