iobroker.telegram-menu 2.2.4 → 2.3.1

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 +18 -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 +149 -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 +122 -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 +94 -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 +283 -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 +136 -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 +157 -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 +86 -283
  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 +149 -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 +519 -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 +66 -0
  262. package/build/test/test/object.test.js.map +1 -0
  263. package/build/test/test/string.test.js +385 -0
  264. package/build/test/test/string.test.js.map +1 -0
  265. package/build/test/test/time.test.js +186 -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 +32 -27
  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 const isNewline = getNewline(newline);\n modifiedTextToSend = modifiedTextToSend.includes(config.rowSplitter)\n ? `${modifiedTextToSend.replace(config.rowSplitter, modifiedStateVal.toString())}${isNewline}`\n : `${modifiedTextToSend} ${modifiedStateVal} ${isNewline}`;\n\n adapter.log.debug(!error ? `Value Changed to: ${modifiedTextToSend}` : `No Change`);\n\n valueArrayForCorrectOrder[index] = modifiedTextToSend;\n });\n await Promise.all(promises);\n\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,SAAS,GAAG,EAAE;AAEhC,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,eAAe,SAAS,EAAE;AAE5C,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,122 @@
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
+ let isValidJson = false;
43
+ let json = {};
44
+ if (requestMessageIdObj == null ? void 0 : requestMessageIdObj.val) {
45
+ const result = (0, import_string.parseJSON)(String(requestMessageIdObj == null ? void 0 : requestMessageIdObj.val), import_main.adapter);
46
+ json = result.json;
47
+ isValidJson = result.isValidJson;
48
+ }
49
+ requestMessageId = isValidJson ? json : {};
50
+ const userIDValue = requestUserIdObj.val.toString();
51
+ if (!requestMessageId[userIDValue]) {
52
+ requestMessageId[userIDValue] = [];
53
+ }
54
+ if (!((_a = requestMessageId[userIDValue]) == null ? void 0 : _a.find((message) => message.id === state.val))) {
55
+ requestMessageId[userIDValue].push({
56
+ id: state.val,
57
+ time: Date.now(),
58
+ request: request == null ? void 0 : request.val
59
+ });
60
+ }
61
+ requestMessageId = removeOldMessageIds(requestMessageId, userIDValue);
62
+ await import_main.adapter.setState("communication.requestIds", JSON.stringify(requestMessageId), true);
63
+ } catch (e) {
64
+ (0, import_logging.errorLogger)("Error saveMessageIds:", e, import_main.adapter);
65
+ }
66
+ }
67
+ function removeOldMessageIds(messages, chatID) {
68
+ messages[chatID] = messages[chatID].filter((message) => {
69
+ return message.time && message.time > Date.now() - 1e3 * 60 * 60 * 24 * 2;
70
+ });
71
+ return messages;
72
+ }
73
+ const removeMessageFromList = ({
74
+ element,
75
+ chat_id,
76
+ copyMessageIds
77
+ }) => {
78
+ return copyMessageIds[chat_id].filter((message) => message.id !== element.id);
79
+ };
80
+ async function deleteMessageIds(user, telegramParams, whatShouldDelete) {
81
+ const { telegramInstance, userListWithChatID } = telegramParams;
82
+ try {
83
+ const requestMessageIdObj = await import_main.adapter.getStateAsync("communication.requestIds");
84
+ const lastMessageId = await import_main.adapter.getForeignStateAsync(`${telegramInstance}.communicate.requestMessageId`);
85
+ if (!requestMessageIdObj || typeof requestMessageIdObj.val !== "string" || !JSON.parse(requestMessageIdObj.val)) {
86
+ return;
87
+ }
88
+ const chat_id = (0, import_utils.getChatID)(userListWithChatID, user);
89
+ const { json, isValidJson } = (0, import_string.parseJSON)(requestMessageIdObj.val);
90
+ if (!isValidJson || !chat_id) {
91
+ return;
92
+ }
93
+ if (lastMessageId && lastMessageId.val) {
94
+ json[chat_id].push({ id: lastMessageId.val.toString() });
95
+ }
96
+ isDeleting = true;
97
+ const copyMessageIds = (0, import_utils.deepCopy)(json, import_main.adapter);
98
+ json[chat_id].forEach((element, index) => {
99
+ var _a;
100
+ const id = (_a = element.id) == null ? void 0 : _a.toString();
101
+ if (whatShouldDelete === "all" && id) {
102
+ (0, import_botAction.deleteMessageByBot)(telegramInstance, user, parseInt(id), chat_id);
103
+ }
104
+ if (whatShouldDelete === "last" && index === json[chat_id].length - 1 && id) {
105
+ (0, import_botAction.deleteMessageByBot)(telegramInstance, user, parseInt(id), chat_id);
106
+ }
107
+ if (!copyMessageIds) {
108
+ return;
109
+ }
110
+ copyMessageIds[chat_id] = removeMessageFromList({ element, chat_id, copyMessageIds });
111
+ });
112
+ await import_main.adapter.setState("communication.requestIds", JSON.stringify(copyMessageIds), true);
113
+ } catch (e) {
114
+ (0, import_logging.errorLogger)("Error deleteMessageIds:", e, import_main.adapter);
115
+ }
116
+ }
117
+ // Annotate the CommonJS export names for ESM import in node:
118
+ 0 && (module.exports = {
119
+ deleteMessageIds,
120
+ saveMessageIds
121
+ });
122
+ //# 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 let isValidJson = false;\n let json = {};\n\n if (requestMessageIdObj?.val) {\n const result = parseJSON<Messages>(String(requestMessageIdObj?.val), adapter);\n json = result.json;\n isValidJson = result.isValidJson;\n }\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
+ }