iobroker.telegram-menu 2.2.4 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/README.md +12 -0
  2. package/admin/build/index.js +49 -49
  3. package/admin/build/index.js.map +3 -3
  4. package/admin/css/button.css +3 -0
  5. package/admin/css/row-editor.css +1 -1
  6. package/admin/css/style.css +46 -25
  7. package/admin/css/textarea.css +7 -11
  8. package/admin/i18n/de/translations.json +124 -123
  9. package/admin/i18n/en/translations.json +3 -2
  10. package/admin/i18n/es/translations.json +3 -2
  11. package/admin/i18n/fr/translations.json +3 -2
  12. package/admin/i18n/it/translations.json +3 -2
  13. package/admin/i18n/nl/translations.json +3 -2
  14. package/admin/i18n/pl/translations.json +3 -2
  15. package/admin/i18n/pt/translations.json +3 -2
  16. package/admin/i18n/ru/translations.json +3 -2
  17. package/admin/i18n/uk/translations.json +3 -2
  18. package/admin/i18n/zh-cn/translations.json +3 -2
  19. package/admin/words.js +3 -1
  20. package/build/admin/src/config/helper.js +178 -0
  21. package/build/admin/src/config/helper.js.map +1 -0
  22. package/build/admin/src/lib/Utils.js +64 -0
  23. package/build/admin/src/lib/Utils.js.map +1 -0
  24. package/build/admin/src/types/event.js +3 -0
  25. package/build/admin/src/types/event.js.map +1 -0
  26. package/build/app/action.js +270 -0
  27. package/build/app/action.js.map +7 -0
  28. package/build/app/adapterManager.js +36 -0
  29. package/build/app/adapterManager.js.map +7 -0
  30. package/build/app/adapterStartMenuSend.js +59 -0
  31. package/build/app/adapterStartMenuSend.js.map +7 -0
  32. package/build/app/backMenu.js +110 -0
  33. package/build/app/backMenu.js.map +7 -0
  34. package/build/app/botAction.js +47 -0
  35. package/build/app/botAction.js.map +7 -0
  36. package/build/app/configVariables.js +56 -0
  37. package/build/app/configVariables.js.map +7 -0
  38. package/build/app/connection.js +42 -0
  39. package/build/app/connection.js.map +7 -0
  40. package/build/app/createState.js +42 -0
  41. package/build/app/createState.js.map +7 -0
  42. package/build/app/dynamicSwitch.js +69 -0
  43. package/build/app/dynamicSwitch.js.map +7 -0
  44. package/build/app/dynamicSwitchMenu.js +69 -0
  45. package/build/app/dynamicSwitchMenu.js.map +7 -0
  46. package/build/app/dynamicValue.js +80 -0
  47. package/build/app/dynamicValue.js.map +7 -0
  48. package/build/app/echarts.js +60 -0
  49. package/build/app/echarts.js.map +7 -0
  50. package/build/app/getstate.js +148 -0
  51. package/build/app/getstate.js.map +7 -0
  52. package/build/app/global.js +2 -0
  53. package/build/app/global.js.map +7 -0
  54. package/build/app/httpRequest.js +84 -0
  55. package/build/app/httpRequest.js.map +7 -0
  56. package/build/app/jsonTable.js +158 -0
  57. package/build/app/jsonTable.js.map +7 -0
  58. package/build/app/logging.js +46 -0
  59. package/build/app/logging.js.map +7 -0
  60. package/build/app/messageIds.js +116 -0
  61. package/build/app/messageIds.js.map +7 -0
  62. package/build/app/processData.js +198 -0
  63. package/build/app/processData.js.map +7 -0
  64. package/build/app/sendNav.js +49 -0
  65. package/build/app/sendNav.js.map +7 -0
  66. package/build/app/sendpic.js +95 -0
  67. package/build/app/sendpic.js.map +7 -0
  68. package/build/app/sentry.js +43 -0
  69. package/build/app/sentry.js.map +7 -0
  70. package/build/app/setStateIdsToListenTo.js +42 -0
  71. package/build/app/setStateIdsToListenTo.js.map +7 -0
  72. package/build/app/setstate.js +145 -0
  73. package/build/app/setstate.js.map +7 -0
  74. package/build/app/shoppingList.js +97 -0
  75. package/build/app/shoppingList.js.map +7 -0
  76. package/build/app/subMenu.js +281 -0
  77. package/build/app/subMenu.js.map +7 -0
  78. package/build/app/subscribeStates.js +41 -0
  79. package/build/app/subscribeStates.js.map +7 -0
  80. package/build/app/telegram.js +131 -0
  81. package/build/app/telegram.js.map +7 -0
  82. package/build/app/validateMenus.js +64 -0
  83. package/build/app/validateMenus.js.map +7 -0
  84. package/build/build/src/app/action.js +447 -0
  85. package/build/build/src/app/adapterStartMenuSend.js +37 -0
  86. package/build/build/src/app/backMenu.js +70 -0
  87. package/build/build/src/app/botAction.js +25 -0
  88. package/build/build/src/app/connection.js +19 -0
  89. package/build/build/src/app/createState.js +19 -0
  90. package/build/build/src/app/dynamicSwitch.js +51 -0
  91. package/build/build/src/app/dynamicValue.js +64 -0
  92. package/build/build/src/app/echarts.js +45 -0
  93. package/build/build/src/app/getstate.js +157 -0
  94. package/build/build/src/app/global.js +59 -0
  95. package/build/build/src/app/httpRequest.js +64 -0
  96. package/build/build/src/app/jsonTable.js +147 -0
  97. package/build/build/src/app/logging.js +13 -0
  98. package/build/build/src/app/messageIds.js +88 -0
  99. package/build/build/src/app/processData.js +208 -0
  100. package/build/build/src/app/sendNav.js +30 -0
  101. package/build/build/src/app/sendpic.js +69 -0
  102. package/build/build/src/app/setstate.js +126 -0
  103. package/build/build/src/app/shoppingList.js +72 -0
  104. package/build/build/src/app/subMenu.js +361 -0
  105. package/build/build/src/app/subscribeStates.js +25 -0
  106. package/build/build/src/app/telegram.js +101 -0
  107. package/build/build/src/lib/string.js +28 -0
  108. package/build/build/src/lib/time.js +23 -0
  109. package/build/build/src/lib/utilities.js +263 -0
  110. package/build/build/src/lib/utils.js +13 -0
  111. package/build/build/src/main.js +402 -0
  112. package/build/config/config.js +134 -0
  113. package/build/config/config.js.map +7 -0
  114. package/build/io-package.json +87 -87
  115. package/build/lib/action.js +1 -3
  116. package/build/lib/action.js.map +2 -2
  117. package/build/lib/adapterStartMenuSend.js.map +1 -1
  118. package/build/lib/appUtils.js +158 -0
  119. package/build/lib/appUtils.js.map +7 -0
  120. package/build/lib/appUtilsString.js +37 -0
  121. package/build/lib/appUtilsString.js.map +7 -0
  122. package/build/lib/backMenu.js.map +2 -2
  123. package/build/lib/botAction.js.map +1 -1
  124. package/build/lib/dynamicSwitch.js.map +1 -1
  125. package/build/lib/dynamicValue.js.map +1 -1
  126. package/build/lib/echarts.js.map +1 -1
  127. package/build/lib/getstate.js.map +1 -1
  128. package/build/lib/global.js.map +1 -1
  129. package/build/lib/httpRequest.js.map +1 -1
  130. package/build/lib/json.js +54 -0
  131. package/build/lib/json.js.map +7 -0
  132. package/build/lib/jsonTable.js.map +1 -1
  133. package/build/lib/math.js +41 -0
  134. package/build/lib/math.js.map +7 -0
  135. package/build/lib/messageIds.js.map +1 -1
  136. package/build/lib/object.js +35 -0
  137. package/build/lib/object.js.map +7 -0
  138. package/build/lib/processData.js +4 -18
  139. package/build/lib/processData.js.map +3 -3
  140. package/build/lib/sendNav.js.map +1 -1
  141. package/build/lib/sendpic.js +23 -22
  142. package/build/lib/sendpic.js.map +2 -2
  143. package/build/lib/setstate.js.map +1 -1
  144. package/build/lib/shoppingList.js.map +1 -1
  145. package/build/lib/splitValues.js +63 -0
  146. package/build/lib/splitValues.js.map +7 -0
  147. package/build/lib/string.js +125 -3
  148. package/build/lib/string.js.map +2 -2
  149. package/build/lib/subMenu.js +1 -2
  150. package/build/lib/subMenu.js.map +2 -2
  151. package/build/lib/subscribeStates.js.map +1 -1
  152. package/build/lib/telegram.js.map +1 -1
  153. package/build/lib/time.js +93 -0
  154. package/build/lib/time.js.map +7 -0
  155. package/build/lib/utilities.js +84 -281
  156. package/build/lib/utilities.js.map +3 -3
  157. package/build/lib/utils.js +66 -0
  158. package/build/lib/utils.js.map +7 -0
  159. package/build/main.js +151 -233
  160. package/build/main.js.map +3 -3
  161. package/build/src/app/action.js +239 -0
  162. package/build/src/app/action.js.map +1 -0
  163. package/build/src/app/adapterManager.js +12 -0
  164. package/build/src/app/adapterManager.js.map +1 -0
  165. package/build/src/app/adapterStartMenuSend.js +36 -0
  166. package/build/src/app/adapterStartMenuSend.js.map +1 -0
  167. package/build/src/app/backMenu.js +81 -0
  168. package/build/src/app/backMenu.js.map +1 -0
  169. package/build/src/app/botAction.js +25 -0
  170. package/build/src/app/botAction.js.map +1 -0
  171. package/build/src/app/configVariables.js +32 -0
  172. package/build/src/app/configVariables.js.map +1 -0
  173. package/build/src/app/connection.js +20 -0
  174. package/build/src/app/connection.js.map +1 -0
  175. package/build/src/app/createState.js +19 -0
  176. package/build/src/app/createState.js.map +1 -0
  177. package/build/src/app/dynamicSwitch.js +52 -0
  178. package/build/src/app/dynamicSwitch.js.map +1 -0
  179. package/build/src/app/dynamicSwitchMenu.js +52 -0
  180. package/build/src/app/dynamicSwitchMenu.js.map +1 -0
  181. package/build/src/app/dynamicValue.js +52 -0
  182. package/build/src/app/dynamicValue.js.map +1 -0
  183. package/build/src/app/echarts.js +33 -0
  184. package/build/src/app/echarts.js.map +1 -0
  185. package/build/src/app/getstate.js +122 -0
  186. package/build/src/app/getstate.js.map +1 -0
  187. package/build/src/app/global.js +8 -0
  188. package/build/src/app/global.js.map +1 -0
  189. package/build/src/app/httpRequest.js +55 -0
  190. package/build/src/app/httpRequest.js.map +1 -0
  191. package/build/src/app/jsonTable.js +147 -0
  192. package/build/src/app/jsonTable.js.map +1 -0
  193. package/build/src/app/logging.js +22 -0
  194. package/build/src/app/logging.js.map +1 -0
  195. package/build/src/app/messageIds.js +89 -0
  196. package/build/src/app/messageIds.js.map +1 -0
  197. package/build/src/app/processData.js +153 -0
  198. package/build/src/app/processData.js.map +1 -0
  199. package/build/src/app/sendNav.js +26 -0
  200. package/build/src/app/sendNav.js.map +1 -0
  201. package/build/src/app/sendpic.js +66 -0
  202. package/build/src/app/sendpic.js.map +1 -0
  203. package/build/src/app/sentry.js +18 -0
  204. package/build/src/app/sentry.js.map +1 -0
  205. package/build/src/app/setStateIdsToListenTo.js +17 -0
  206. package/build/src/app/setStateIdsToListenTo.js.map +1 -0
  207. package/build/src/app/setstate.js +114 -0
  208. package/build/src/app/setstate.js.map +1 -0
  209. package/build/src/app/shoppingList.js +74 -0
  210. package/build/src/app/shoppingList.js.map +1 -0
  211. package/build/src/app/subMenu.js +237 -0
  212. package/build/src/app/subMenu.js.map +1 -0
  213. package/build/src/app/subscribeStates.js +17 -0
  214. package/build/src/app/subscribeStates.js.map +1 -0
  215. package/build/src/app/telegram.js +83 -0
  216. package/build/src/app/telegram.js.map +1 -0
  217. package/build/src/app/validateMenus.js +30 -0
  218. package/build/src/app/validateMenus.js.map +1 -0
  219. package/build/src/config/config.js +100 -0
  220. package/build/src/config/config.js.map +1 -0
  221. package/build/src/lib/appUtils.js +126 -0
  222. package/build/src/lib/appUtils.js.map +1 -0
  223. package/build/src/lib/appUtilsString.js +13 -0
  224. package/build/src/lib/appUtilsString.js.map +1 -0
  225. package/build/src/lib/json.js +37 -0
  226. package/build/src/lib/json.js.map +1 -0
  227. package/build/src/lib/math.js +17 -0
  228. package/build/src/lib/math.js.map +1 -0
  229. package/build/src/lib/object.js +10 -0
  230. package/build/src/lib/object.js.map +1 -0
  231. package/build/src/lib/splitValues.js +35 -0
  232. package/build/src/lib/splitValues.js.map +1 -0
  233. package/build/src/lib/string.js +121 -0
  234. package/build/src/lib/string.js.map +1 -0
  235. package/build/src/lib/time.js +57 -0
  236. package/build/src/lib/time.js.map +1 -0
  237. package/build/src/lib/utilities.js +111 -0
  238. package/build/src/lib/utilities.js.map +1 -0
  239. package/build/src/lib/utils.js +37 -0
  240. package/build/src/lib/utils.js.map +1 -0
  241. package/build/src/main.js +332 -0
  242. package/build/src/main.js.map +1 -0
  243. package/build/src/test/setup.js +12 -0
  244. package/build/src/test/setup.js.map +1 -0
  245. package/build/src/types/types.js +3 -0
  246. package/build/src/types/types.js.map +1 -0
  247. package/build/test/integration.js +0 -1
  248. package/build/test/integration.js.map +1 -1
  249. package/build/test/mocha.setup.js +0 -1
  250. package/build/test/mocha.setup.js.map +1 -1
  251. package/build/test/package.js +0 -1
  252. package/build/test/package.js.map +1 -1
  253. package/build/test/setup.js +12 -0
  254. package/build/test/setup.js.map +1 -0
  255. package/build/test/test/appUtils.test.js +507 -0
  256. package/build/test/test/appUtils.test.js.map +1 -0
  257. package/build/test/test/appUtilsString.test.js +16 -0
  258. package/build/test/test/appUtilsString.test.js.map +1 -0
  259. package/build/test/test/math.test.js +33 -0
  260. package/build/test/test/math.test.js.map +1 -0
  261. package/build/test/test/object.test.js +54 -0
  262. package/build/test/test/object.test.js.map +1 -0
  263. package/build/test/test/string.test.js +361 -0
  264. package/build/test/test/string.test.js.map +1 -0
  265. package/build/test/test/time.test.js +201 -0
  266. package/build/test/test/time.test.js.map +1 -0
  267. package/build/test/test/utils.test.js +115 -0
  268. package/build/test/test/utils.test.js.map +1 -0
  269. package/build/types/types.js +15 -0
  270. package/build/types/types.js.map +3 -3
  271. package/io-package.json +19 -14
  272. package/package.json +14 -10
  273. package/build/main.test.js +0 -24
  274. package/build/main.test.js.map +0 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/app/getstate.ts"],
4
+ "sourcesContent": ["import { sendToTelegram, sendToTelegramSubmenu } from './telegram';\nimport { bindingFunc, idBySelector } from './action';\nimport { createKeyboardFromJson, createTextTableFromJson } from './jsonTable';\nimport { processTimeIdLc } from '../lib/utilities';\nimport { isDefined } from '../lib/utils';\nimport { adapter } from '../main';\nimport type { Part, TelegramParams } from '../types/types';\nimport { integrateTimeIntoText } from '../lib/time';\nimport { cleanUpString, decomposeText, getNewline, getValueToExchange, jsonString } from '../lib/string';\nimport { calcValue, roundValue } from '../lib/appUtils';\nimport { config } from '../config/config';\nimport { errorLogger } from './logging';\n\nexport async function getState(part: Part, userToSend: string, telegramParams: TelegramParams): Promise<void> {\n try {\n const parse_mode = part.getData?.[0].parse_mode; // Parse Mode ist nur immer im ersten Element\n const valueArrayForCorrectOrder: string[] = [];\n const promises = (part.getData || []).map(async ({ newline, text, id }, index): Promise<void> => {\n adapter.log.debug(`Get Value ID: ${id}`);\n\n if (id.includes(config.functionSelektor)) {\n await idBySelector({\n selector: id,\n text,\n userToSend,\n newline,\n telegramParams,\n });\n return;\n }\n\n if (text.includes(config.binding.start)) {\n await bindingFunc(text, userToSend, telegramParams, parse_mode);\n return;\n }\n\n const state = await adapter.getForeignStateAsync(id);\n\n if (!isDefined(state)) {\n adapter.log.error('The state is empty!');\n valueArrayForCorrectOrder[index] = 'N/A';\n return Promise.resolve();\n }\n\n const stateValue = cleanUpString(state.val?.toString());\n\n let modifiedStateVal = stateValue;\n let modifiedTextToSend = text;\n\n if (text.includes(config.timestamp.ts) || text.includes(config.timestamp.lc)) {\n modifiedTextToSend = await processTimeIdLc(text, id);\n modifiedStateVal = '';\n }\n\n if (modifiedTextToSend.includes(config.time)) {\n modifiedTextToSend = integrateTimeIntoText(modifiedTextToSend, stateValue);\n modifiedStateVal = '';\n }\n\n if (modifiedTextToSend.includes(config.math.start)) {\n const { textToSend, calculated, error } = calcValue(modifiedTextToSend, modifiedStateVal, adapter);\n if (!error) {\n modifiedTextToSend = textToSend;\n modifiedStateVal = calculated;\n\n adapter.log.debug(`TextToSend: ${modifiedTextToSend} val: ${modifiedStateVal}`);\n }\n }\n\n if (modifiedTextToSend.includes(config.round.start)) {\n const { error, text, roundedValue } = roundValue(String(modifiedStateVal), modifiedTextToSend);\n if (!error) {\n adapter.log.debug(`Rounded from ${jsonString(modifiedStateVal)} to ${jsonString(roundedValue)}`);\n modifiedStateVal = roundedValue;\n modifiedTextToSend = text;\n }\n }\n\n if (modifiedTextToSend.includes(config.json.start)) {\n const { substring } = decomposeText(modifiedTextToSend, config.json.start, config.json.end);\n\n if (substring.includes(config.json.textTable)) {\n const result = createTextTableFromJson(stateValue, modifiedTextToSend);\n if (result) {\n await sendToTelegram({\n userToSend,\n textToSend: result,\n telegramParams,\n parse_mode,\n });\n return;\n }\n adapter.log.debug('Cannot create a Text-Table');\n } else {\n const result = createKeyboardFromJson(stateValue, modifiedTextToSend, id, userToSend);\n if (stateValue && stateValue.length > 0) {\n if (result && result.text && result.keyboard) {\n sendToTelegramSubmenu(userToSend, result.text, result.keyboard, telegramParams, parse_mode);\n }\n return;\n }\n await sendToTelegram({\n userToSend,\n textToSend: 'The state is empty!',\n telegramParams,\n parse_mode,\n });\n adapter.log.debug('The state is empty!');\n return;\n }\n }\n\n const {\n newValue: _val,\n textToSend: _text,\n error,\n } = getValueToExchange(adapter, modifiedTextToSend, modifiedStateVal);\n\n modifiedStateVal = String(_val);\n modifiedTextToSend = _text;\n\n adapter.log.debug(!error ? `Value Changed to: ${modifiedTextToSend}` : `No Change`);\n\n const isNewline = getNewline(newline);\n\n valueArrayForCorrectOrder[index] = modifiedTextToSend.includes(config.rowSplitter)\n ? `${modifiedTextToSend.replace(config.rowSplitter, modifiedStateVal.toString())}${isNewline}`\n : `${modifiedTextToSend} ${modifiedStateVal} ${isNewline}`;\n });\n await Promise.all(promises);\n await sendToTelegram({\n userToSend,\n textToSend: valueArrayForCorrectOrder.join(''),\n telegramParams,\n parse_mode,\n });\n } catch (error: any) {\n errorLogger('Error GetData:', error, adapter);\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["_a", "error", "text"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=global.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var httpRequest_exports = {};
30
+ __export(httpRequest_exports, {
31
+ httpRequest: () => httpRequest
32
+ });
33
+ module.exports = __toCommonJS(httpRequest_exports);
34
+ var import_axios = __toESM(require("axios"));
35
+ var import_telegram = require("./telegram");
36
+ var import_path = __toESM(require("path"));
37
+ var import_fs = __toESM(require("fs"));
38
+ var import_logging = require("./logging");
39
+ var import_utils = require("../lib/utils");
40
+ var import_main = require("../main");
41
+ async function httpRequest(parts, userToSend, telegramParams, directoryPicture) {
42
+ if (!parts.httpRequest) {
43
+ return;
44
+ }
45
+ for (const { url, password, user: username, filename } of parts.httpRequest) {
46
+ import_main.adapter.log.debug(`URL: ${url}`);
47
+ try {
48
+ const response = await (0, import_axios.default)(
49
+ username && password ? {
50
+ method: "get",
51
+ url,
52
+ responseType: "arraybuffer",
53
+ auth: {
54
+ username,
55
+ password
56
+ }
57
+ } : {
58
+ method: "get",
59
+ url,
60
+ responseType: "arraybuffer"
61
+ }
62
+ );
63
+ if (!(0, import_utils.validateDirectory)(import_main.adapter, directoryPicture)) {
64
+ return;
65
+ }
66
+ const imagePath = import_path.default.join(directoryPicture, filename);
67
+ import_fs.default.writeFileSync(imagePath, Buffer.from(response.data), "binary");
68
+ import_main.adapter.log.debug(`Pic saved: ${imagePath}`);
69
+ await (0, import_telegram.sendToTelegram)({
70
+ userToSend,
71
+ textToSend: imagePath,
72
+ telegramParams
73
+ });
74
+ } catch (e) {
75
+ (0, import_logging.errorLogger)("Error http request:", e, import_main.adapter);
76
+ }
77
+ }
78
+ return true;
79
+ }
80
+ // Annotate the CommonJS export names for ESM import in node:
81
+ 0 && (module.exports = {
82
+ httpRequest
83
+ });
84
+ //# sourceMappingURL=httpRequest.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/app/httpRequest.ts"],
4
+ "sourcesContent": ["import axios from 'axios';\nimport { sendToTelegram } from './telegram';\nimport path from 'path';\nimport fs from 'fs';\nimport { errorLogger } from './logging';\nimport type { Part, TelegramParams } from '../types/types';\nimport { validateDirectory } from '../lib/utils';\nimport { adapter } from '../main';\n\nasync function httpRequest(\n parts: Part,\n userToSend: string,\n telegramParams: TelegramParams,\n directoryPicture: string,\n): Promise<boolean | undefined> {\n if (!parts.httpRequest) {\n return;\n }\n for (const { url, password, user: username, filename } of parts.httpRequest) {\n adapter.log.debug(`URL: ${url}`);\n\n try {\n //prettier-ignore\n\n const response = await axios(\n username && password\n ? {\n method: 'get',\n url,\n responseType: 'arraybuffer',\n auth: {\n username,\n password,\n },\n }\n : {\n method: 'get',\n url,\n responseType: 'arraybuffer',\n },\n );\n\n if (!validateDirectory(adapter, directoryPicture)) {\n return;\n }\n const imagePath = path.join(directoryPicture, filename);\n\n fs.writeFileSync(imagePath, Buffer.from(response.data), 'binary');\n adapter.log.debug(`Pic saved: ${imagePath}`);\n\n await sendToTelegram({\n userToSend,\n textToSend: imagePath,\n telegramParams,\n });\n } catch (e: any) {\n errorLogger('Error http request:', e, adapter);\n }\n }\n return true;\n}\n\nexport { httpRequest };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAClB,sBAA+B;AAC/B,kBAAiB;AACjB,gBAAe;AACf,qBAA4B;AAE5B,mBAAkC;AAClC,kBAAwB;AAExB,eAAe,YACX,OACA,YACA,gBACA,kBAC4B;AAC5B,MAAI,CAAC,MAAM,aAAa;AACpB;AAAA,EACJ;AACA,aAAW,EAAE,KAAK,UAAU,MAAM,UAAU,SAAS,KAAK,MAAM,aAAa;AACzE,wBAAQ,IAAI,MAAM,QAAQ,GAAG,EAAE;AAE/B,QAAI;AAGA,YAAM,WAAW,UAAM,aAAAA;AAAA,QACnB,YAAY,WACN;AAAA,UACI,QAAQ;AAAA,UACR;AAAA,UACA,cAAc;AAAA,UACd,MAAM;AAAA,YACF;AAAA,YACA;AAAA,UACJ;AAAA,QACJ,IACA;AAAA,UACI,QAAQ;AAAA,UACR;AAAA,UACA,cAAc;AAAA,QAClB;AAAA,MACV;AAEA,UAAI,KAAC,gCAAkB,qBAAS,gBAAgB,GAAG;AAC/C;AAAA,MACJ;AACA,YAAM,YAAY,YAAAC,QAAK,KAAK,kBAAkB,QAAQ;AAEtD,gBAAAC,QAAG,cAAc,WAAW,OAAO,KAAK,SAAS,IAAI,GAAG,QAAQ;AAChE,0BAAQ,IAAI,MAAM,cAAc,SAAS,EAAE;AAE3C,gBAAM,gCAAe;AAAA,QACjB;AAAA,QACA,YAAY;AAAA,QACZ;AAAA,MACJ,CAAC;AAAA,IACL,SAAS,GAAQ;AACb,sCAAY,uBAAuB,GAAG,mBAAO;AAAA,IACjD;AAAA,EACJ;AACA,SAAO;AACX;",
6
+ "names": ["axios", "path", "fs"]
7
+ }
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var jsonTable_exports = {};
20
+ __export(jsonTable_exports, {
21
+ createKeyboardFromJson: () => createKeyboardFromJson,
22
+ createTextTableFromJson: () => createTextTableFromJson
23
+ });
24
+ module.exports = __toCommonJS(jsonTable_exports);
25
+ var import_logging = require("./logging");
26
+ var import_main = require("../main");
27
+ var import_string = require("../lib/string");
28
+ var import_json = require("../lib/json");
29
+ const lastText = {};
30
+ const createKeyboardFromJson = (val, text, id, user) => {
31
+ try {
32
+ if (text) {
33
+ lastText[user] = text;
34
+ } else {
35
+ text = lastText[user];
36
+ }
37
+ const { substring } = (0, import_string.decomposeText)(text, "{json:", "}");
38
+ const array = substring.split(";");
39
+ const headline = array[2];
40
+ const itemArray = array[1].replace("[", "").replace("]", "").replace(/"/g, "").split(",");
41
+ let idShoppingList = false;
42
+ if (array.length > 3 && array[3] == "shoppinglist") {
43
+ idShoppingList = true;
44
+ }
45
+ const { validJson, error } = (0, import_json.makeValidJson)(val, import_main.adapter);
46
+ import_main.adapter.log.debug(`Val: ${validJson} with type: ${typeof val}`);
47
+ if (error) {
48
+ return;
49
+ }
50
+ const { json, isValidJson } = (0, import_string.parseJSON)(validJson, import_main.adapter);
51
+ if (!isValidJson) {
52
+ return;
53
+ }
54
+ const keyboard = { inline_keyboard: [] };
55
+ json.forEach((element, index) => {
56
+ const firstRow = [];
57
+ const rowArray = [];
58
+ itemArray.forEach((item) => {
59
+ if (index == 0) {
60
+ const btnText = item.split(":")[1];
61
+ if (btnText.length > 0) {
62
+ firstRow.push({ text: btnText, callback_data: "1" });
63
+ }
64
+ }
65
+ if (idShoppingList) {
66
+ const value = element.buttondelete;
67
+ const valueDeleteLinkArray = (0, import_string.decomposeText)(value, "('", "')").substring.replace("('", "").replace(",true')", "").split(".");
68
+ const instanceAlexa = valueDeleteLinkArray[1];
69
+ const valueDeleteId = valueDeleteLinkArray[5];
70
+ const instanceShoppingListID = `${id.split(".")[1]}.${id.split(".")[2]}`;
71
+ rowArray.push({
72
+ text: element[item.split(":")[0]],
73
+ callback_data: `sList:${instanceShoppingListID}:${instanceAlexa}:${valueDeleteId}:`
74
+ });
75
+ } else {
76
+ rowArray.push({ text: element[item.split(":")[0]], callback_data: "1" });
77
+ }
78
+ });
79
+ if (index == 0) {
80
+ keyboard.inline_keyboard.push(firstRow);
81
+ }
82
+ keyboard.inline_keyboard.push(rowArray);
83
+ });
84
+ import_main.adapter.log.debug(`Keyboard: ${(0, import_string.jsonString)(keyboard)}`);
85
+ return { text: headline, keyboard };
86
+ } catch (err) {
87
+ (0, import_logging.errorLogger)("Error createKeyboardFromJson:", err, import_main.adapter);
88
+ }
89
+ };
90
+ function createTextTableFromJson(val, textToSend) {
91
+ try {
92
+ const substring = (0, import_string.decomposeText)(textToSend, "{json:", "}").substring;
93
+ const array = substring.split(";");
94
+ const itemArray = array[1].replace("[", "").replace("]", "").replace(/"/g, "").split(",");
95
+ const valArray = JSON.parse(val);
96
+ const lengthArray = [];
97
+ itemArray.forEach((element) => {
98
+ lengthArray.push(element.split(":")[1].length);
99
+ });
100
+ valArray.forEach((element) => {
101
+ itemArray.forEach((item, index) => {
102
+ if (lengthArray[index] < element[item.split(":")[0]].toString().length) {
103
+ lengthArray[index] = element[item.split(":")[0]].toString().length;
104
+ }
105
+ });
106
+ });
107
+ import_main.adapter.log.debug(`Length of rows: ${(0, import_string.jsonString)(lengthArray)}`);
108
+ const headline = array[2];
109
+ let textTable = textToSend.replace(substring, "").trim();
110
+ if (textTable != "") {
111
+ textTable += " \n\n";
112
+ }
113
+ textTable += ` ${headline}
114
+ \``;
115
+ const enlargeColumn = 1;
116
+ const reduce = lengthArray.length == 1 ? 2 : 0;
117
+ const lineLength = lengthArray.reduce((a, b) => a + b, 0) + 5 - reduce + enlargeColumn * lengthArray.length;
118
+ textTable += `${"-".repeat(lineLength)}
119
+ `;
120
+ valArray.forEach((element, elementIndex) => {
121
+ itemArray.forEach((item, index) => {
122
+ if (elementIndex == 0 && index == 0) {
123
+ textTable += "|";
124
+ itemArray.forEach((item2, i) => {
125
+ if (item2.split(":")[1].length > 0) {
126
+ textTable += ` ${item2.split(":")[1].toString().padEnd(lengthArray[i] + enlargeColumn, " ")}|`;
127
+ if (i == itemArray.length - 1) {
128
+ textTable += "\n";
129
+ textTable += `${"-".repeat(lineLength)}
130
+ `;
131
+ }
132
+ } else {
133
+ textTable = textTable.slice(0, -1);
134
+ }
135
+ });
136
+ }
137
+ if (index == 0) {
138
+ textTable += "|";
139
+ }
140
+ textTable += ` ${element[item.split(":")[0]].toString().padEnd(lengthArray[index] + enlargeColumn, " ")}|`;
141
+ if (index == itemArray.length - 1) {
142
+ textTable += "\n";
143
+ }
144
+ });
145
+ });
146
+ textTable += "-".repeat(lineLength);
147
+ textTable += "`";
148
+ return textTable;
149
+ } catch (e) {
150
+ (0, import_logging.errorLogger)("Error createTextTableFromJson:", e, import_main.adapter);
151
+ }
152
+ }
153
+ // Annotate the CommonJS export names for ESM import in node:
154
+ 0 && (module.exports = {
155
+ createKeyboardFromJson,
156
+ createTextTableFromJson
157
+ });
158
+ //# sourceMappingURL=jsonTable.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/app/jsonTable.ts"],
4
+ "sourcesContent": ["import { errorLogger } from './logging';\nimport type { Keyboard, KeyboardItem, LastText, ValArray } from '../types/types';\nimport { adapter } from '../main';\nimport { decomposeText, jsonString, parseJSON } from '../lib/string';\nimport { makeValidJson } from '../lib/json';\n\nconst lastText: LastText = {};\nconst createKeyboardFromJson = (\n val: string,\n text: string | null,\n id: string,\n user: string,\n): { text: string; keyboard: Keyboard } | undefined => {\n try {\n if (text) {\n lastText[user] = text;\n } else {\n text = lastText[user];\n }\n const { substring } = decomposeText(text, '{json:', '}');\n\n const array = substring.split(';');\n const headline = array[2];\n const itemArray: string[] = array[1].replace('[', '').replace(']', '').replace(/\"/g, '').split(',');\n let idShoppingList = false;\n if (array.length > 3 && array[3] == 'shoppinglist') {\n idShoppingList = true;\n }\n const { validJson, error } = makeValidJson(val, adapter);\n\n adapter.log.debug(`Val: ${validJson} with type: ${typeof val}`);\n if (error) {\n return;\n }\n\n const { json, isValidJson } = parseJSON<ValArray[]>(validJson, adapter);\n if (!isValidJson) {\n return;\n }\n\n const keyboard: Keyboard = { inline_keyboard: [] };\n\n json.forEach((element, index) => {\n const firstRow: KeyboardItem[] = [];\n const rowArray: KeyboardItem[] = [];\n itemArray.forEach(item => {\n if (index == 0) {\n const btnText: string = item.split(':')[1];\n if (btnText.length > 0) {\n firstRow.push({ text: btnText, callback_data: '1' });\n }\n }\n if (idShoppingList) {\n const value = element.buttondelete;\n const valueDeleteLinkArray = decomposeText(value, \"('\", \"')\")\n .substring.replace(\"('\", '')\n .replace(\",true')\", '')\n .split('.');\n const instanceAlexa = valueDeleteLinkArray[1];\n const valueDeleteId = valueDeleteLinkArray[5];\n\n const instanceShoppingListID = `${id.split('.')[1]}.${id.split('.')[2]}`;\n rowArray.push({\n text: element[item.split(':')[0]],\n callback_data: `sList:${instanceShoppingListID}:${instanceAlexa}:${valueDeleteId}:`,\n });\n } else {\n rowArray.push({ text: element[item.split(':')[0]], callback_data: '1' });\n }\n });\n if (index == 0) {\n keyboard.inline_keyboard.push(firstRow);\n }\n keyboard.inline_keyboard.push(rowArray);\n });\n\n adapter.log.debug(`Keyboard: ${jsonString(keyboard)}`);\n\n return { text: headline, keyboard };\n } catch (err: any) {\n errorLogger('Error createKeyboardFromJson:', err, adapter);\n }\n};\n\nfunction createTextTableFromJson(val: string, textToSend: string): string | undefined {\n try {\n const substring = decomposeText(textToSend, '{json:', '}').substring;\n const array = substring.split(';');\n const itemArray: string[] = array[1].replace('[', '').replace(']', '').replace(/\"/g, '').split(',');\n const valArray: ValArray[] = JSON.parse(val);\n\n const lengthArray: number[] = []; // Array f\u00FCr die L\u00E4nge der Items\n\n itemArray.forEach(element => {\n lengthArray.push(element.split(':')[1].length);\n });\n valArray.forEach(element => {\n itemArray.forEach((item, index) => {\n if (lengthArray[index] < element[item.split(':')[0]].toString().length) {\n lengthArray[index] = element[item.split(':')[0]].toString().length;\n }\n });\n });\n adapter.log.debug(`Length of rows: ${jsonString(lengthArray)}`);\n const headline = array[2];\n let textTable = textToSend.replace(substring, '').trim();\n if (textTable != '') {\n textTable += ' \\n\\n';\n }\n textTable += ` ${headline} \\n\\``;\n const enlargeColumn = 1;\n const reduce = lengthArray.length == 1 ? 2 : 0;\n const lineLength = lengthArray.reduce((a, b) => a + b, 0) + 5 - reduce + enlargeColumn * lengthArray.length;\n // Breakline\n textTable += `${'-'.repeat(lineLength)} \\n`;\n valArray.forEach((element, elementIndex) => {\n itemArray.forEach((item, index) => {\n // TableHead\n if (elementIndex == 0 && index == 0) {\n textTable += '|';\n itemArray.forEach((item2, i) => {\n if (item2.split(':')[1].length > 0) {\n textTable += ` ${item2\n .split(':')[1]\n .toString()\n .padEnd(lengthArray[i] + enlargeColumn, ' ')}|`;\n if (i == itemArray.length - 1) {\n textTable += '\\n';\n // Breakline\n textTable += `${'-'.repeat(lineLength)} \\n`;\n }\n } else {\n textTable = textTable.slice(0, -1);\n }\n });\n }\n // TableBody\n if (index == 0) {\n textTable += '|';\n }\n textTable += ` ${element[item.split(':')[0]].toString().padEnd(lengthArray[index] + enlargeColumn, ' ')}|`;\n if (index == itemArray.length - 1) {\n textTable += '\\n';\n }\n });\n });\n // Breakline\n textTable += '-'.repeat(lineLength);\n textTable += '`';\n return textTable;\n } catch (e: any) {\n errorLogger('Error createTextTableFromJson:', e, adapter);\n }\n}\nexport { createKeyboardFromJson, createTextTableFromJson };\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var logging_exports = {};
20
+ __export(logging_exports, {
21
+ errorLogger: () => errorLogger
22
+ });
23
+ module.exports = __toCommonJS(logging_exports);
24
+ const errorLogger = (title, e, adapter) => {
25
+ var _a, _b;
26
+ if (adapter.supportsFeature && adapter.supportsFeature("PLUGINS")) {
27
+ const sentryInstance = adapter.getPluginInstance("sentry");
28
+ if (sentryInstance) {
29
+ sentryInstance.getSentryObject().captureException(e);
30
+ }
31
+ }
32
+ adapter.log.error(title);
33
+ adapter.log.error(`Error message: ${e.message}`);
34
+ adapter.log.error(`Error stack: ${e.stack}`);
35
+ if (e == null ? void 0 : e.response) {
36
+ adapter.log.error(`Server response: ${(_a = e == null ? void 0 : e.response) == null ? void 0 : _a.status}`);
37
+ }
38
+ if (e == null ? void 0 : e.response) {
39
+ adapter.log.error(`Server status: ${(_b = e == null ? void 0 : e.response) == null ? void 0 : _b.statusText}`);
40
+ }
41
+ };
42
+ // Annotate the CommonJS export names for ESM import in node:
43
+ 0 && (module.exports = {
44
+ errorLogger
45
+ });
46
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/app/logging.ts"],
4
+ "sourcesContent": ["import type { Adapter } from '../types/types';\n\nexport const errorLogger = (title: string, e: any, adapter: Adapter): void => {\n if (adapter.supportsFeature && adapter.supportsFeature('PLUGINS')) {\n const sentryInstance = adapter.getPluginInstance('sentry');\n if (sentryInstance) {\n sentryInstance.getSentryObject().captureException(e);\n }\n }\n adapter.log.error(title);\n\n adapter.log.error(`Error message: ${e.message}`);\n adapter.log.error(`Error stack: ${e.stack}`);\n if (e?.response) {\n adapter.log.error(`Server response: ${e?.response?.status}`);\n }\n if (e?.response) {\n adapter.log.error(`Server status: ${e?.response?.statusText}`);\n }\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,cAAc,CAAC,OAAe,GAAQ,YAA2B;AAF9E;AAGI,MAAI,QAAQ,mBAAmB,QAAQ,gBAAgB,SAAS,GAAG;AAC/D,UAAM,iBAAiB,QAAQ,kBAAkB,QAAQ;AACzD,QAAI,gBAAgB;AAChB,qBAAe,gBAAgB,EAAE,iBAAiB,CAAC;AAAA,IACvD;AAAA,EACJ;AACA,UAAQ,IAAI,MAAM,KAAK;AAEvB,UAAQ,IAAI,MAAM,kBAAkB,EAAE,OAAO,EAAE;AAC/C,UAAQ,IAAI,MAAM,gBAAgB,EAAE,KAAK,EAAE;AAC3C,MAAI,uBAAG,UAAU;AACb,YAAQ,IAAI,MAAM,qBAAoB,4BAAG,aAAH,mBAAa,MAAM,EAAE;AAAA,EAC/D;AACA,MAAI,uBAAG,UAAU;AACb,YAAQ,IAAI,MAAM,mBAAkB,4BAAG,aAAH,mBAAa,UAAU,EAAE;AAAA,EACjE;AACJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var messageIds_exports = {};
20
+ __export(messageIds_exports, {
21
+ deleteMessageIds: () => deleteMessageIds,
22
+ saveMessageIds: () => saveMessageIds
23
+ });
24
+ module.exports = __toCommonJS(messageIds_exports);
25
+ var import_main = require("../main");
26
+ var import_botAction = require("./botAction");
27
+ var import_logging = require("./logging");
28
+ var import_utils = require("../lib/utils");
29
+ var import_string = require("../lib/string");
30
+ let isDeleting = false;
31
+ async function saveMessageIds(state, instanceTelegram) {
32
+ var _a;
33
+ try {
34
+ let requestMessageId = {};
35
+ const requestMessageIdObj = !isDeleting ? await import_main.adapter.getStateAsync("communication.requestIds") : null;
36
+ isDeleting = false;
37
+ const requestUserIdObj = await import_main.adapter.getForeignStateAsync(`${instanceTelegram}.communicate.requestChatId`);
38
+ const request = await import_main.adapter.getForeignStateAsync(`${instanceTelegram}.communicate.request`);
39
+ if (!(requestUserIdObj == null ? void 0 : requestUserIdObj.val)) {
40
+ return;
41
+ }
42
+ const { json, isValidJson } = (0, import_string.parseJSON)(String(requestMessageIdObj == null ? void 0 : requestMessageIdObj.val), import_main.adapter);
43
+ requestMessageId = isValidJson ? json : {};
44
+ const userIDValue = requestUserIdObj.val.toString();
45
+ if (!requestMessageId[userIDValue]) {
46
+ requestMessageId[userIDValue] = [];
47
+ }
48
+ if (!((_a = requestMessageId[userIDValue]) == null ? void 0 : _a.find((message) => message.id === state.val))) {
49
+ requestMessageId[userIDValue].push({
50
+ id: state.val,
51
+ time: Date.now(),
52
+ request: request == null ? void 0 : request.val
53
+ });
54
+ }
55
+ requestMessageId = removeOldMessageIds(requestMessageId, userIDValue);
56
+ await import_main.adapter.setState("communication.requestIds", JSON.stringify(requestMessageId), true);
57
+ } catch (e) {
58
+ (0, import_logging.errorLogger)("Error saveMessageIds:", e, import_main.adapter);
59
+ }
60
+ }
61
+ function removeOldMessageIds(messages, chatID) {
62
+ messages[chatID] = messages[chatID].filter((message) => {
63
+ return message.time && message.time > Date.now() - 1e3 * 60 * 60 * 24 * 2;
64
+ });
65
+ return messages;
66
+ }
67
+ const removeMessageFromList = ({
68
+ element,
69
+ chat_id,
70
+ copyMessageIds
71
+ }) => {
72
+ return copyMessageIds[chat_id].filter((message) => message.id !== element.id);
73
+ };
74
+ async function deleteMessageIds(user, telegramParams, whatShouldDelete) {
75
+ const { telegramInstance, userListWithChatID } = telegramParams;
76
+ try {
77
+ const requestMessageIdObj = await import_main.adapter.getStateAsync("communication.requestIds");
78
+ const lastMessageId = await import_main.adapter.getForeignStateAsync(`${telegramInstance}.communicate.requestMessageId`);
79
+ if (!requestMessageIdObj || typeof requestMessageIdObj.val !== "string" || !JSON.parse(requestMessageIdObj.val)) {
80
+ return;
81
+ }
82
+ const chat_id = (0, import_utils.getChatID)(userListWithChatID, user);
83
+ const { json, isValidJson } = (0, import_string.parseJSON)(requestMessageIdObj.val);
84
+ if (!isValidJson || !chat_id) {
85
+ return;
86
+ }
87
+ if (lastMessageId && lastMessageId.val) {
88
+ json[chat_id].push({ id: lastMessageId.val.toString() });
89
+ }
90
+ isDeleting = true;
91
+ const copyMessageIds = (0, import_utils.deepCopy)(json, import_main.adapter);
92
+ json[chat_id].forEach((element, index) => {
93
+ var _a;
94
+ const id = (_a = element.id) == null ? void 0 : _a.toString();
95
+ if (whatShouldDelete === "all" && id) {
96
+ (0, import_botAction.deleteMessageByBot)(telegramInstance, user, parseInt(id), chat_id);
97
+ }
98
+ if (whatShouldDelete === "last" && index === json[chat_id].length - 1 && id) {
99
+ (0, import_botAction.deleteMessageByBot)(telegramInstance, user, parseInt(id), chat_id);
100
+ }
101
+ if (!copyMessageIds) {
102
+ return;
103
+ }
104
+ copyMessageIds[chat_id] = removeMessageFromList({ element, chat_id, copyMessageIds });
105
+ });
106
+ await import_main.adapter.setState("communication.requestIds", JSON.stringify(copyMessageIds), true);
107
+ } catch (e) {
108
+ (0, import_logging.errorLogger)("Error deleteMessageIds:", e, import_main.adapter);
109
+ }
110
+ }
111
+ // Annotate the CommonJS export names for ESM import in node:
112
+ 0 && (module.exports = {
113
+ deleteMessageIds,
114
+ saveMessageIds
115
+ });
116
+ //# sourceMappingURL=messageIds.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/app/messageIds.ts"],
4
+ "sourcesContent": ["import { adapter } from '../main';\nimport { deleteMessageByBot } from './botAction';\nimport { errorLogger } from './logging';\nimport type { MessageInfos, Messages, TelegramParams, WhatShouldDelete } from '../types/types';\nimport { deepCopy, getChatID } from '../lib/utils';\nimport { parseJSON } from '../lib/string';\n\nlet isDeleting = false;\nasync function saveMessageIds(state: ioBroker.State, instanceTelegram: string): Promise<void> {\n try {\n let requestMessageId: Messages = {};\n\n const requestMessageIdObj = !isDeleting ? await adapter.getStateAsync('communication.requestIds') : null;\n\n isDeleting = false;\n const requestUserIdObj = await adapter.getForeignStateAsync(`${instanceTelegram}.communicate.requestChatId`);\n\n const request = await adapter.getForeignStateAsync(`${instanceTelegram}.communicate.request`);\n\n if (!requestUserIdObj?.val) {\n return;\n }\n const { json, isValidJson } = parseJSON<Messages>(String(requestMessageIdObj?.val), adapter);\n requestMessageId = isValidJson ? json : {};\n\n const userIDValue = requestUserIdObj.val.toString();\n if (!requestMessageId[userIDValue]) {\n requestMessageId[userIDValue] = [];\n }\n\n if (!requestMessageId[userIDValue]?.find(message => message.id === state.val)) {\n requestMessageId[userIDValue].push({\n id: state.val,\n time: Date.now(),\n request: request?.val,\n });\n }\n\n requestMessageId = removeOldMessageIds(requestMessageId, userIDValue);\n await adapter.setState('communication.requestIds', JSON.stringify(requestMessageId), true);\n } catch (e: any) {\n errorLogger('Error saveMessageIds:', e, adapter);\n }\n}\nfunction removeOldMessageIds(messages: Messages, chatID: string): Messages {\n messages[chatID] = messages[chatID].filter(message => {\n return message.time && message.time > Date.now() - 1000 * 60 * 60 * 24 * 2;\n });\n return messages;\n}\n\nconst removeMessageFromList = ({\n element,\n chat_id,\n copyMessageIds,\n}: {\n element: MessageInfos;\n chat_id: string;\n copyMessageIds: Messages;\n}): MessageInfos[] => {\n return copyMessageIds[chat_id].filter(message => message.id !== element.id);\n};\n\nasync function deleteMessageIds(\n user: string,\n telegramParams: TelegramParams,\n whatShouldDelete: WhatShouldDelete,\n): Promise<void> {\n const { telegramInstance, userListWithChatID } = telegramParams;\n try {\n const requestMessageIdObj = await adapter.getStateAsync('communication.requestIds');\n const lastMessageId = await adapter.getForeignStateAsync(`${telegramInstance}.communicate.requestMessageId`);\n\n if (\n !requestMessageIdObj ||\n typeof requestMessageIdObj.val !== 'string' ||\n !JSON.parse(requestMessageIdObj.val)\n ) {\n return;\n }\n\n const chat_id = getChatID(userListWithChatID, user);\n const { json, isValidJson } = parseJSON<Messages>(requestMessageIdObj.val);\n\n if (!isValidJson || !chat_id) {\n return;\n }\n if (lastMessageId && lastMessageId.val) {\n json[chat_id].push({ id: lastMessageId.val.toString() });\n }\n\n isDeleting = true;\n const copyMessageIds = deepCopy(json, adapter);\n json[chat_id].forEach((element, index) => {\n const id = element.id?.toString();\n if (whatShouldDelete === 'all' && id) {\n deleteMessageByBot(telegramInstance, user, parseInt(id), chat_id);\n }\n if (whatShouldDelete === 'last' && index === json[chat_id].length - 1 && id) {\n deleteMessageByBot(telegramInstance, user, parseInt(id), chat_id);\n }\n if (!copyMessageIds) {\n return;\n }\n copyMessageIds[chat_id] = removeMessageFromList({ element, chat_id, copyMessageIds });\n });\n\n await adapter.setState('communication.requestIds', JSON.stringify(copyMessageIds), true);\n } catch (e: any) {\n errorLogger('Error deleteMessageIds:', e, adapter);\n }\n}\n\nexport { deleteMessageIds, saveMessageIds };\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }