From 3db50afc0a8a3a371aaf5acb0a928ce23a91521c Mon Sep 17 00:00:00 2001 From: lee Date: Mon, 6 Jan 2025 19:09:10 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=EC=9E=AC=EB=82=9C=EB=AC=B8=EC=9E=90=20?= =?UTF-8?q?=ED=99=95=EC=9E=A5=EB=B8=94=EB=9F=AD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- extern/util/static.js | 4 + src/class/Expansion.js | 1 + .../block_expansion_emergencyMessage.js | 240 ++++++++++++++++++ 3 files changed, 245 insertions(+) create mode 100644 src/playground/blocks/block_expansion_emergencyMessage.js diff --git a/extern/util/static.js b/extern/util/static.js index 68ecfe6f32..d4fd54d719 100644 --- a/extern/util/static.js +++ b/extern/util/static.js @@ -486,6 +486,10 @@ EntryStatic.getAllBlocks = function () { 'get_social_disaster_guideline', 'count_safety_accident_guideline', 'get_safety_accident_guideline', + 'emergency_message_title', + 'count_emergency_message', + 'get_emergency_message', + 'check_emergency_message', ], }, { diff --git a/src/class/Expansion.js b/src/class/Expansion.js index 389b73b81e..c47fa70178 100644 --- a/src/class/Expansion.js +++ b/src/class/Expansion.js @@ -4,6 +4,7 @@ import '../playground/blocks/block_expansion_festival'; import '../playground/blocks/block_expansion_behaviorconduct_disaster'; import '../playground/blocks/block_expansion_behaviorconduct_lifesafety'; import '../playground/blocks/block_expansion_emergencyActionGuidelines'; +import '../playground/blocks/block_expansion_emergencyMessage'; export default class Expansion { constructor(playground) { diff --git a/src/playground/blocks/block_expansion_emergencyMessage.js b/src/playground/blocks/block_expansion_emergencyMessage.js new file mode 100644 index 0000000000..10077b769c --- /dev/null +++ b/src/playground/blocks/block_expansion_emergencyMessage.js @@ -0,0 +1,240 @@ +'use strict'; + +const PromiseManager = require('../../core/promiseManager'); +const { callApi } = require('../../util/common'); + +Entry.EXPANSION_BLOCK.emergencyMessage = { + name: 'emergencyMessage', + imageName: 'emergencyMessage.png', + title: { + ko: '재난문자', + en: 'Disaster alert', + }, + titleKey: 'template.emergency_message_title_text', + description: Lang.Msgs.expansion_emergencyMessage_description, + descriptionKey: 'Msgs.expansion_emergencyMessage_description', + isInitialized: false, + init() { + if (this.isInitialized) { + return; + } + Entry.EXPANSION_BLOCK.emergencyMessage.isInitialized = true; + }, + api: '/api/expansionBlock/emergencyMessage', + apiType: '01', +}; + +const EMERGENCY_CATEGORY_MAP = { + info: Lang.Blocks.emergencyMessageTypeInfo, + exigency: Lang.Blocks.emergencyMessageTypeExigency, + urgency: Lang.Blocks.emergencyMessageTypeUrgency, +} + +const getEmergencyMessage = (params, defaultValue) => { + const now = new Date(); + const hour = now.getHours(); + const day = now.getDay(); + const key = `emergencyMessage-${day}-${hour}`; + const promiseManager = new PromiseManager(); + const job = promiseManager + // eslint-disable-next-line new-cap + .Promise((resolve) => { + callApi(key, { + url: `${Entry.EXPANSION_BLOCK.emergencyMessage.api}`, + }) + .then((result) => { + if (result) { + let items = result?.data?.body || []; + const category = EMERGENCY_CATEGORY_MAP?.[params?.category]; + if (category) { + items = items.filter((item) => item.EMRG_STEP_NM === category); + } + console.log('items', items, params, result?.data); + switch (params.command) { + case 'count': + return resolve(items?.length || 0); + case 'get': + const result = items[params.index]?.[params.option]; + if (params.option === 'REG_YMD') { + return resolve(new Date(result).toLocaleString()); + } + return resolve(result); + case 'exist': + return resolve(items?.length > 0); + default: + return resolve(defaultValue); + break; + } + } + return resolve(defaultValue); + }) + .catch(() => resolve(defaultValue)); + }) + .catch(() => defaultValue); + + return job; +}; + +Entry.EXPANSION_BLOCK.emergencyActionGuidelines.getBlocks = function () { + // 전체, 안전안내, 긴급재난, 위급재난 + const EmergencyMessageCategory = { + type: 'Dropdown', + options: [ + [Lang.Blocks.emergencyMessageTypeAll, 'all'], + [Lang.Blocks.emergencyMessageTypeInfo, 'info'], + [Lang.Blocks.emergencyMessageTypeExigency, 'exigency'], + [Lang.Blocks.emergencyMessageTypeUrgency, 'urgency'], + ], + value: 'all', + fontSize: 11, + bgColor: EntryStatic.colorSet.block.darken.EXPANSION, + arrowColor: EntryStatic.colorSet.common.WHITE, + }; + // 내용, 수신지역, 긴급단계, 재해구분, 생성일시 + const EmergencyMessageOptions = { + type: 'Dropdown', + options: [ + [Lang.Blocks.emergencyMessageContents, 'MSG_CN'], + [Lang.Blocks.emergencyMessageRegeion, 'RCPTN_RGN_NM'], + [Lang.Blocks.emergencyMessageStep, 'EMRG_STEP_NM'], + [Lang.Blocks.emergencyMessageDisaster, 'DST_SE_NM'], + [Lang.Blocks.emergencyMessageRegisterDate, 'REG_YMD'], + ], + value: 'MSG_CN', + fontSize: 11, + bgColor: EntryStatic.colorSet.block.darken.EXPANSION, + arrowColor: EntryStatic.colorSet.common.WHITE, + }; + + return { + emergency_message_title: { + template: '%1', + skeleton: 'basic_text', + color: EntryStatic.colorSet.common.TRANSPARENT, + params: [ + { + type: 'Text', + text: Lang.template.emergency_message_title_text, + color: EntryStatic.colorSet.common.TEXT, + align: 'center', + }, + ], + def: { + type: 'emergency_message_title', + }, + class: 'emergencyMessage', + isNotFor: ['emergencyMessage'], + events: {}, + }, + count_emergency_message: { + color: EntryStatic.colorSet.block.default.EXPANSION, + outerLine: EntryStatic.colorSet.block.darken.EXPANSION, + skeleton: 'basic_string_field', + statements: [], + params: [EmergencyMessageCategory], + events: {}, + def: { + params: [EmergencyMessageCategory.value], + type: 'count_emergency_message', + }, + pyHelpDef: { + params: ['A&value'], + type: 'count_emergency_message', + }, + paramsKeyMap: { + CATEGORY: 0, + }, + class: 'emergencyMessage', + isNotFor: ['emergencyMessage'], + func(sprite, script) { + const category = script.getField('CATEGORY', script); + return getEmergencyMessage({ + command: 'count', + category, + }, 0); + }, + syntax: { + js: [], + py: [], + }, + }, + get_emergency_message: { + color: EntryStatic.colorSet.block.default.EXPANSION, + outerLine: EntryStatic.colorSet.block.darken.EXPANSION, + skeleton: 'basic_string_field', + statements: [], + params: [ + EmergencyMessageCategory, + { + type: 'Block', + accept: 'string', + defaultType: 'number', + }, + EmergencyMessageOptions, + ], + events: {}, + def: { + params: [EmergencyMessageCategory.value, null, EmergencyMessageOptions.value], + type: 'get_emergency_message', + }, + pyHelpDef: { + params: ['A&value', 'B&value', 'C&value'], + type: 'get_emergency_message', + }, + paramsKeyMap: { + CATEGORY: 0, + NUMBER: 1, + OPTION: 2, + }, + class: 'emergencyMessage', + isNotFor: ['emergencyMessage'], + func(sprite, script) { + const number = script.getStringValue('NUMBER', script); + const category = script.getField('CATEGORY', script); + const option = script.getField('OPTION', script); + return getEmergencyMessage({ + command: 'get', + category, + index: number, + option, + }); + }, + syntax: { + js: [], + py: [], + }, + }, + check_emergency_message: { + color: EntryStatic.colorSet.block.default.EXPANSION, + outerLine: EntryStatic.colorSet.block.darken.EXPANSION, + skeleton: 'basic_boolean_field', + statements: [], + params: [EmergencyMessageCategory], + events: {}, + def: { + params: [EmergencyMessageCategory.value], + type: 'check_emergency_message', + }, + pyHelpDef: { + params: ['B&value', null], + type: 'check_emergency_message', + }, + paramsKeyMap: { + CATEGORY: 0, + }, + class: 'emergencyMessage', + isNotFor: ['emergencyMessage'], + async func(sprite, script) { + const category = script.getField('CATEGORY', script); + return getEmergencyMessage({ + command: 'exist', + category, + }); + }, + syntax: { + js: [], + py: [], + }, + }, + }; +}; From 06c210eeb8c8df49c0c7b80e7bcaa9ad6be6f35f Mon Sep 17 00:00:00 2001 From: lee Date: Tue, 7 Jan 2025 11:31:22 +0900 Subject: [PATCH 2/5] emergencyMessage -> disasterAlert --- extern/util/static.js | 8 +- src/class/Expansion.js | 2 +- ...ge.js => block_expansion_disasterAlert.js} | 110 +++++++++--------- 3 files changed, 60 insertions(+), 60 deletions(-) rename src/playground/blocks/{block_expansion_emergencyMessage.js => block_expansion_disasterAlert.js} (67%) diff --git a/extern/util/static.js b/extern/util/static.js index d4fd54d719..0a558c28b8 100644 --- a/extern/util/static.js +++ b/extern/util/static.js @@ -486,10 +486,10 @@ EntryStatic.getAllBlocks = function () { 'get_social_disaster_guideline', 'count_safety_accident_guideline', 'get_safety_accident_guideline', - 'emergency_message_title', - 'count_emergency_message', - 'get_emergency_message', - 'check_emergency_message', + 'disaster_alert_title', + 'count_disaster_alert', + 'get_disaster_alert', + 'check_disaster_alert', ], }, { diff --git a/src/class/Expansion.js b/src/class/Expansion.js index c47fa70178..7a6931d328 100644 --- a/src/class/Expansion.js +++ b/src/class/Expansion.js @@ -4,7 +4,7 @@ import '../playground/blocks/block_expansion_festival'; import '../playground/blocks/block_expansion_behaviorconduct_disaster'; import '../playground/blocks/block_expansion_behaviorconduct_lifesafety'; import '../playground/blocks/block_expansion_emergencyActionGuidelines'; -import '../playground/blocks/block_expansion_emergencyMessage'; +import '../playground/blocks/block_expansion_disasterAlert'; export default class Expansion { constructor(playground) { diff --git a/src/playground/blocks/block_expansion_emergencyMessage.js b/src/playground/blocks/block_expansion_disasterAlert.js similarity index 67% rename from src/playground/blocks/block_expansion_emergencyMessage.js rename to src/playground/blocks/block_expansion_disasterAlert.js index 10077b769c..31e55cae35 100644 --- a/src/playground/blocks/block_expansion_emergencyMessage.js +++ b/src/playground/blocks/block_expansion_disasterAlert.js @@ -3,44 +3,44 @@ const PromiseManager = require('../../core/promiseManager'); const { callApi } = require('../../util/common'); -Entry.EXPANSION_BLOCK.emergencyMessage = { - name: 'emergencyMessage', - imageName: 'emergencyMessage.png', +Entry.EXPANSION_BLOCK.disasterAlert = { + name: 'disasterAlert', + imageName: 'disasterAlert.png', title: { ko: '재난문자', en: 'Disaster alert', }, - titleKey: 'template.emergency_message_title_text', - description: Lang.Msgs.expansion_emergencyMessage_description, - descriptionKey: 'Msgs.expansion_emergencyMessage_description', + titleKey: 'template.disaster_alert_title_text', + description: Lang.Msgs.expansion_disasterAlert_description, + descriptionKey: 'Msgs.expansion_disasterAlert_description', isInitialized: false, init() { if (this.isInitialized) { return; } - Entry.EXPANSION_BLOCK.emergencyMessage.isInitialized = true; + Entry.EXPANSION_BLOCK.disasterAlert.isInitialized = true; }, - api: '/api/expansionBlock/emergencyMessage', + api: '/api/expansionBlock/disasterAlert', apiType: '01', }; const EMERGENCY_CATEGORY_MAP = { - info: Lang.Blocks.emergencyMessageTypeInfo, - exigency: Lang.Blocks.emergencyMessageTypeExigency, - urgency: Lang.Blocks.emergencyMessageTypeUrgency, + info: Lang.Blocks.disasterAlertTypeInfo, + exigency: Lang.Blocks.disasterAlertTypeExigency, + urgency: Lang.Blocks.disasterAlertTypeUrgency, } -const getEmergencyMessage = (params, defaultValue) => { +const getDisasterAlert = (params, defaultValue) => { const now = new Date(); const hour = now.getHours(); const day = now.getDay(); - const key = `emergencyMessage-${day}-${hour}`; + const key = `disasterAlert-${day}-${hour}`; const promiseManager = new PromiseManager(); const job = promiseManager // eslint-disable-next-line new-cap .Promise((resolve) => { callApi(key, { - url: `${Entry.EXPANSION_BLOCK.emergencyMessage.api}`, + url: `${Entry.EXPANSION_BLOCK.disasterAlert.api}`, }) .then((result) => { if (result) { @@ -77,13 +77,13 @@ const getEmergencyMessage = (params, defaultValue) => { Entry.EXPANSION_BLOCK.emergencyActionGuidelines.getBlocks = function () { // 전체, 안전안내, 긴급재난, 위급재난 - const EmergencyMessageCategory = { + const DisasterAlertCategory = { type: 'Dropdown', options: [ - [Lang.Blocks.emergencyMessageTypeAll, 'all'], - [Lang.Blocks.emergencyMessageTypeInfo, 'info'], - [Lang.Blocks.emergencyMessageTypeExigency, 'exigency'], - [Lang.Blocks.emergencyMessageTypeUrgency, 'urgency'], + [Lang.Blocks.disasterAlertTypeAll, 'all'], + [Lang.Blocks.disasterAlertTypeInfo, 'info'], + [Lang.Blocks.disasterAlertTypeExigency, 'exigency'], + [Lang.Blocks.disasterAlertTypeUrgency, 'urgency'], ], value: 'all', fontSize: 11, @@ -91,14 +91,14 @@ Entry.EXPANSION_BLOCK.emergencyActionGuidelines.getBlocks = function () { arrowColor: EntryStatic.colorSet.common.WHITE, }; // 내용, 수신지역, 긴급단계, 재해구분, 생성일시 - const EmergencyMessageOptions = { + const DisasterAlertOptions = { type: 'Dropdown', options: [ - [Lang.Blocks.emergencyMessageContents, 'MSG_CN'], - [Lang.Blocks.emergencyMessageRegeion, 'RCPTN_RGN_NM'], - [Lang.Blocks.emergencyMessageStep, 'EMRG_STEP_NM'], - [Lang.Blocks.emergencyMessageDisaster, 'DST_SE_NM'], - [Lang.Blocks.emergencyMessageRegisterDate, 'REG_YMD'], + [Lang.Blocks.disasterAlertContents, 'MSG_CN'], + [Lang.Blocks.disasterAlertRegeion, 'RCPTN_RGN_NM'], + [Lang.Blocks.disasterAlertStep, 'EMRG_STEP_NM'], + [Lang.Blocks.disasterAlertDisaster, 'DST_SE_NM'], + [Lang.Blocks.disasterAlertRegisterDate, 'REG_YMD'], ], value: 'MSG_CN', fontSize: 11, @@ -107,48 +107,48 @@ Entry.EXPANSION_BLOCK.emergencyActionGuidelines.getBlocks = function () { }; return { - emergency_message_title: { + disaster_alert_title: { template: '%1', skeleton: 'basic_text', color: EntryStatic.colorSet.common.TRANSPARENT, params: [ { type: 'Text', - text: Lang.template.emergency_message_title_text, + text: Lang.template.disaster_alert_title_text, color: EntryStatic.colorSet.common.TEXT, align: 'center', }, ], def: { - type: 'emergency_message_title', + type: 'disaster_alert_title', }, - class: 'emergencyMessage', - isNotFor: ['emergencyMessage'], + class: 'disasterAlert', + isNotFor: ['disasterAlert'], events: {}, }, - count_emergency_message: { + count_disaster_alert: { color: EntryStatic.colorSet.block.default.EXPANSION, outerLine: EntryStatic.colorSet.block.darken.EXPANSION, skeleton: 'basic_string_field', statements: [], - params: [EmergencyMessageCategory], + params: [DisasterAlertCategory], events: {}, def: { - params: [EmergencyMessageCategory.value], - type: 'count_emergency_message', + params: [DisasterAlertCategory.value], + type: 'count_disaster_alert', }, pyHelpDef: { params: ['A&value'], - type: 'count_emergency_message', + type: 'count_disaster_alert', }, paramsKeyMap: { CATEGORY: 0, }, - class: 'emergencyMessage', - isNotFor: ['emergencyMessage'], + class: 'disasterAlert', + isNotFor: ['disasterAlert'], func(sprite, script) { const category = script.getField('CATEGORY', script); - return getEmergencyMessage({ + return getDisasterAlert({ command: 'count', category, }, 0); @@ -158,41 +158,41 @@ Entry.EXPANSION_BLOCK.emergencyActionGuidelines.getBlocks = function () { py: [], }, }, - get_emergency_message: { + get_disaster_alert: { color: EntryStatic.colorSet.block.default.EXPANSION, outerLine: EntryStatic.colorSet.block.darken.EXPANSION, skeleton: 'basic_string_field', statements: [], params: [ - EmergencyMessageCategory, + DisasterAlertCategory, { type: 'Block', accept: 'string', defaultType: 'number', }, - EmergencyMessageOptions, + DisasterAlertOptions, ], events: {}, def: { - params: [EmergencyMessageCategory.value, null, EmergencyMessageOptions.value], - type: 'get_emergency_message', + params: [DisasterAlertCategory.value, null, DisasterAlertOptions.value], + type: 'get_disaster_alert', }, pyHelpDef: { params: ['A&value', 'B&value', 'C&value'], - type: 'get_emergency_message', + type: 'get_disaster_alert', }, paramsKeyMap: { CATEGORY: 0, NUMBER: 1, OPTION: 2, }, - class: 'emergencyMessage', - isNotFor: ['emergencyMessage'], + class: 'disasterAlert', + isNotFor: ['disasterAlert'], func(sprite, script) { const number = script.getStringValue('NUMBER', script); const category = script.getField('CATEGORY', script); const option = script.getField('OPTION', script); - return getEmergencyMessage({ + return getDisasterAlert({ command: 'get', category, index: number, @@ -204,29 +204,29 @@ Entry.EXPANSION_BLOCK.emergencyActionGuidelines.getBlocks = function () { py: [], }, }, - check_emergency_message: { + check_disaster_alert: { color: EntryStatic.colorSet.block.default.EXPANSION, outerLine: EntryStatic.colorSet.block.darken.EXPANSION, skeleton: 'basic_boolean_field', statements: [], - params: [EmergencyMessageCategory], + params: [DisasterAlertCategory], events: {}, def: { - params: [EmergencyMessageCategory.value], - type: 'check_emergency_message', + params: [DisasterAlertCategory.value], + type: 'check_disaster_alert', }, pyHelpDef: { params: ['B&value', null], - type: 'check_emergency_message', + type: 'check_disaster_alert', }, paramsKeyMap: { CATEGORY: 0, }, - class: 'emergencyMessage', - isNotFor: ['emergencyMessage'], + class: 'disasterAlert', + isNotFor: ['disasterAlert'], async func(sprite, script) { const category = script.getField('CATEGORY', script); - return getEmergencyMessage({ + return getDisasterAlert({ command: 'exist', category, }); From a75d8063713f11a4182075aee926e86a991375d1 Mon Sep 17 00:00:00 2001 From: lee Date: Tue, 7 Jan 2025 11:35:08 +0900 Subject: [PATCH 3/5] =?UTF-8?q?image=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- images/hardware/disasterAlert.png | Bin 0 -> 6123 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/hardware/disasterAlert.png diff --git a/images/hardware/disasterAlert.png b/images/hardware/disasterAlert.png new file mode 100644 index 0000000000000000000000000000000000000000..82ae56706ccb2f1ef04e7a8e1fc9e0001057b9e2 GIT binary patch literal 6123 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 literal 0 HcmV?d00001 From fa03bfe8a17afb82bfd9fda3c9bf14049684e189 Mon Sep 17 00:00:00 2001 From: lee Date: Tue, 7 Jan 2025 11:46:44 +0900 Subject: [PATCH 4/5] lint --- .../blocks/block_expansion_disasterAlert.js | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/playground/blocks/block_expansion_disasterAlert.js b/src/playground/blocks/block_expansion_disasterAlert.js index 31e55cae35..f054079520 100644 --- a/src/playground/blocks/block_expansion_disasterAlert.js +++ b/src/playground/blocks/block_expansion_disasterAlert.js @@ -28,7 +28,7 @@ const EMERGENCY_CATEGORY_MAP = { info: Lang.Blocks.disasterAlertTypeInfo, exigency: Lang.Blocks.disasterAlertTypeExigency, urgency: Lang.Blocks.disasterAlertTypeUrgency, -} +}; const getDisasterAlert = (params, defaultValue) => { const now = new Date(); @@ -49,13 +49,12 @@ const getDisasterAlert = (params, defaultValue) => { if (category) { items = items.filter((item) => item.EMRG_STEP_NM === category); } - console.log('items', items, params, result?.data); switch (params.command) { case 'count': return resolve(items?.length || 0); case 'get': - const result = items[params.index]?.[params.option]; - if (params.option === 'REG_YMD') { + const result = items?.[params?.index - 1]?.[params.option]; + if (params?.option === 'REG_YMD') { return resolve(new Date(result).toLocaleString()); } return resolve(result); @@ -75,7 +74,7 @@ const getDisasterAlert = (params, defaultValue) => { return job; }; -Entry.EXPANSION_BLOCK.emergencyActionGuidelines.getBlocks = function () { +Entry.EXPANSION_BLOCK.disasterAlert.getBlocks = function () { // 전체, 안전안내, 긴급재난, 위급재난 const DisasterAlertCategory = { type: 'Dropdown', @@ -148,10 +147,13 @@ Entry.EXPANSION_BLOCK.emergencyActionGuidelines.getBlocks = function () { isNotFor: ['disasterAlert'], func(sprite, script) { const category = script.getField('CATEGORY', script); - return getDisasterAlert({ - command: 'count', - category, - }, 0); + return getDisasterAlert( + { + command: 'count', + category, + }, + 0 + ); }, syntax: { js: [], From 2ad9b454f3e54c6619cc5bcb101f9ac33485cbf6 Mon Sep 17 00:00:00 2001 From: lee Date: Tue, 7 Jan 2025 11:50:43 +0900 Subject: [PATCH 5/5] =?UTF-8?q?default=20value=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/playground/blocks/block_expansion_disasterAlert.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/playground/blocks/block_expansion_disasterAlert.js b/src/playground/blocks/block_expansion_disasterAlert.js index f054079520..decd81bd13 100644 --- a/src/playground/blocks/block_expansion_disasterAlert.js +++ b/src/playground/blocks/block_expansion_disasterAlert.js @@ -51,9 +51,12 @@ const getDisasterAlert = (params, defaultValue) => { } switch (params.command) { case 'count': - return resolve(items?.length || 0); + return resolve(items?.length || defaultValue || 0); case 'get': const result = items?.[params?.index - 1]?.[params.option]; + if (!result) { + return resolve(defaultValue); + } if (params?.option === 'REG_YMD') { return resolve(new Date(result).toLocaleString()); } @@ -62,7 +65,6 @@ const getDisasterAlert = (params, defaultValue) => { return resolve(items?.length > 0); default: return resolve(defaultValue); - break; } } return resolve(defaultValue);