slidge-whatsapp 0.2.5__cp313-cp313-manylinux_2_36_aarch64.whl → 0.2.7__cp313-cp313-manylinux_2_36_aarch64.whl

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.

Potentially problematic release.


This version of slidge-whatsapp might be problematic. Click here for more details.

Files changed (357) hide show
  1. slidge_whatsapp/config.py +3 -0
  2. slidge_whatsapp/event.go +31 -26
  3. slidge_whatsapp/gateway.go +13 -9
  4. slidge_whatsapp/gateway.py +2 -2
  5. slidge_whatsapp/generated/_whatsapp.cpython-313-aarch64-linux-gnu.h +135 -135
  6. slidge_whatsapp/generated/_whatsapp.cpython-313-aarch64-linux-gnu.so +0 -0
  7. slidge_whatsapp/generated/build.py +108 -108
  8. slidge_whatsapp/generated/whatsapp.c +954 -954
  9. slidge_whatsapp/generated/whatsapp.go +602 -602
  10. slidge_whatsapp/generated/whatsapp.py +783 -783
  11. slidge_whatsapp/generated/whatsapp_go.h +135 -135
  12. slidge_whatsapp/go.mod +15 -12
  13. slidge_whatsapp/go.sum +35 -29
  14. slidge_whatsapp/media/media.go +21 -11
  15. slidge_whatsapp/session.go +73 -66
  16. slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn.go +4 -4
  17. slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn_darwin.go +0 -5
  18. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/go_libinit.go +3 -0
  19. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/symbols.go +40 -20
  20. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/CHANGELOG.md +14 -1
  21. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/ffi.go +2 -2
  22. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/fun.go +10 -2
  23. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib.go +1 -1
  24. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib_unix.go +1 -1
  25. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib_windows.go +1 -1
  26. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/README.md +2 -7
  27. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/callback.go +2 -1
  28. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c +8510 -5090
  29. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h +344 -150
  30. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3.go +57 -23
  31. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.c +4 -0
  32. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go +4 -0
  33. slidge_whatsapp/vendor/github.com/petermattis/goid/.gitignore +4 -0
  34. slidge_whatsapp/vendor/github.com/petermattis/goid/LICENSE +202 -0
  35. slidge_whatsapp/vendor/github.com/petermattis/goid/README.md +4 -0
  36. slidge_whatsapp/vendor/github.com/petermattis/goid/goid.go +35 -0
  37. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_gccgo.go +26 -0
  38. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.3.c +23 -0
  39. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.3.go +22 -0
  40. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.4.go +35 -0
  41. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.4.s +18 -0
  42. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.5.go +28 -0
  43. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.5.s +44 -0
  44. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_slow.go +24 -0
  45. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_gccgo_go1.8.go +17 -0
  46. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.23.go +38 -0
  47. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.5.go +57 -0
  48. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.6.go +43 -0
  49. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.9.go +37 -0
  50. slidge_whatsapp/vendor/github.com/rs/zerolog/CONTRIBUTING.md +43 -0
  51. slidge_whatsapp/vendor/github.com/rs/zerolog/README.md +31 -0
  52. slidge_whatsapp/vendor/github.com/rs/zerolog/console.go +20 -5
  53. slidge_whatsapp/vendor/github.com/rs/zerolog/log/log.go +131 -0
  54. slidge_whatsapp/vendor/github.com/rs/zerolog/log.go +1 -1
  55. slidge_whatsapp/vendor/github.com/rs/zerolog/sampler.go +4 -1
  56. slidge_whatsapp/vendor/github.com/rs/zerolog/writer.go +9 -0
  57. slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/GroupCipher.go +17 -6
  58. slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/GroupSessionBuilder.go +17 -7
  59. slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/state/store/SenderKeyStore.go +4 -2
  60. slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/chain/ChainKey.go +1 -0
  61. slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/identity/IdentityKey.go +1 -0
  62. slidge_whatsapp/vendor/go.mau.fi/libsignal/logger/DefaultLogger.go +2 -2
  63. slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/FingerprintProtocol.pb.go +3 -2
  64. slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/LocalStorageProtocol.pb.go +3 -2
  65. slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/WhisperTextProtocol.pb.go +3 -2
  66. slidge_whatsapp/vendor/go.mau.fi/libsignal/session/Session.go +41 -17
  67. slidge_whatsapp/vendor/go.mau.fi/libsignal/session/SessionCipher.go +64 -30
  68. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/IdentityKeyStore.go +5 -3
  69. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/MessageKeyStore.go +6 -4
  70. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/PreKeyStore.go +6 -4
  71. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/SessionStore.go +8 -6
  72. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/SignedPreKeyStore.go +7 -5
  73. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/connlog.go +257 -0
  74. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/database.go +309 -0
  75. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/iter.go +233 -0
  76. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/json.go +47 -0
  77. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/log.go +129 -0
  78. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/massinsert.go +164 -0
  79. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/queryhelper.go +137 -0
  80. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/reflectscan.go +30 -0
  81. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/transaction.go +180 -0
  82. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/upgrades.go +250 -0
  83. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/upgradetable.go +331 -0
  84. slidge_whatsapp/vendor/go.mau.fi/util/exerrors/dualerror.go +33 -0
  85. slidge_whatsapp/vendor/go.mau.fi/util/exerrors/must.go +23 -0
  86. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/cors.go +32 -0
  87. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/handleerrors.go +64 -0
  88. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/json.go +36 -0
  89. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/middleware.go +30 -0
  90. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/networkerror.go +37 -0
  91. slidge_whatsapp/vendor/go.mau.fi/util/exstrings/stringutil.go +76 -0
  92. slidge_whatsapp/vendor/go.mau.fi/util/exsync/event.go +88 -0
  93. slidge_whatsapp/vendor/go.mau.fi/util/exsync/returnonce.go +25 -0
  94. slidge_whatsapp/vendor/go.mau.fi/util/exsync/ringbuffer.go +139 -0
  95. slidge_whatsapp/vendor/go.mau.fi/util/exsync/syncmap.go +94 -0
  96. slidge_whatsapp/vendor/go.mau.fi/util/exsync/syncset.go +136 -0
  97. slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/callermarshal.go +28 -0
  98. slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/defaults.go +32 -0
  99. slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/generics.go +45 -0
  100. slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/writer.go +81 -0
  101. slidge_whatsapp/vendor/go.mau.fi/util/ptr/ptr.go +43 -0
  102. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/decode.go +27 -26
  103. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/encode.go +4 -3
  104. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/keys.go +5 -4
  105. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate.go +27 -25
  106. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/armadillomessage.go +40 -7
  107. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/binary/encoder.go +1 -1
  108. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/broadcast.go +5 -4
  109. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/call.go +1 -1
  110. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/client.go +119 -37
  111. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/connectionevents.go +29 -11
  112. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download-to-file.go +63 -30
  113. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download.go +74 -34
  114. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/errors.go +1 -0
  115. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/group.go +61 -31
  116. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/internals.go +188 -152
  117. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/keepalive.go +3 -2
  118. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/mediaconn.go +5 -3
  119. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/mediaretry.go +2 -1
  120. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/message.go +444 -135
  121. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/msgsecret.go +118 -31
  122. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/notification.go +78 -42
  123. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/pair-code.go +7 -4
  124. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/pair.go +42 -18
  125. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/prekeys.go +9 -5
  126. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/presence.go +2 -1
  127. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/privacysettings.go +10 -11
  128. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/extra.go +7 -0
  129. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/InstamadilloAddMessage.pb.go +983 -0
  130. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/InstamadilloAddMessage.proto +85 -0
  131. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/extra.go +3 -0
  132. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeActionLog/InstamadilloCoreTypeActionLog.pb.go +197 -0
  133. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeActionLog/InstamadilloCoreTypeActionLog.proto +13 -0
  134. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeAdminMessage/InstamadilloCoreTypeAdminMessage.pb.go +279 -0
  135. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeAdminMessage/InstamadilloCoreTypeAdminMessage.proto +21 -0
  136. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeCollection/InstamadilloCoreTypeCollection.pb.go +137 -0
  137. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeCollection/InstamadilloCoreTypeCollection.proto +10 -0
  138. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeLink/InstamadilloCoreTypeLink.pb.go +313 -0
  139. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeLink/InstamadilloCoreTypeLink.proto +27 -0
  140. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeMedia/InstamadilloCoreTypeMedia.pb.go +1299 -0
  141. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeMedia/InstamadilloCoreTypeMedia.proto +112 -0
  142. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeText/InstamadilloCoreTypeText.pb.go +514 -0
  143. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeText/InstamadilloCoreTypeText.proto +47 -0
  144. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/InstamadilloDeleteMessage.pb.go +123 -0
  145. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/InstamadilloDeleteMessage.proto +7 -0
  146. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/extra.go +3 -0
  147. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/InstamadilloSupplementMessage.pb.go +720 -0
  148. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/InstamadilloSupplementMessage.proto +59 -0
  149. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/extra.go +3 -0
  150. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloTransportPayload/InstamadilloTransportPayload.pb.go +365 -0
  151. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloTransportPayload/InstamadilloTransportPayload.proto +33 -0
  152. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloXmaContentRef/InstamadilloXmaContentRef.pb.go +1238 -0
  153. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloXmaContentRef/InstamadilloXmaContentRef.proto +105 -0
  154. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waAdv/WAAdv.pb.go +39 -9
  155. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.pb.go +354 -175
  156. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.proto +5 -5
  157. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.pb.go +170 -15
  158. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.proto +4 -0
  159. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCert/WACert.pb.go +29 -9
  160. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.go +13 -9
  161. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.pb.go +344 -31
  162. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.proto +26 -0
  163. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/{WAWebProtobufsCompanionReg.pb.go → WACompanionReg.pb.go} +184 -89
  164. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/{WAWebProtobufsCompanionReg.proto → WACompanionReg.proto} +2 -1
  165. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waConsumerApplication/WAConsumerApplication.pb.go +173 -9
  166. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.go +78 -16
  167. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.proto +5 -0
  168. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.pb.go +7428 -2151
  169. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.proto +373 -44
  170. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.pb.go +456 -135
  171. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.proto +14 -0
  172. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.pb.go +198 -0
  173. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.proto +14 -0
  174. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.pb.go +162 -9
  175. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.proto +1 -0
  176. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.pb.go +32 -9
  177. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.proto +1 -0
  178. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.pb.go +192 -52
  179. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.proto +8 -0
  180. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/WAMsgTransport.pb.go +60 -9
  181. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/extra.go +7 -6
  182. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMultiDevice/WAMultiDevice.pb.go +39 -9
  183. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waServerSync/WAServerSync.pb.go +61 -9
  184. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waStatusAttributions/WAStatusAttributions.pb.go +800 -0
  185. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waStatusAttributions/WAStatusAttributions.proto +72 -0
  186. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.pb.go +1344 -438
  187. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.proto +52 -0
  188. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waUserPassword/WAProtobufsUserPassword.pb.go +27 -9
  189. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waVnameCert/WAWebProtobufsVnameCert.pb.go +59 -9
  190. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.pb.go +382 -78
  191. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.proto +8 -0
  192. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.pb.go +563 -9
  193. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.proto +4 -0
  194. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/receipt.go +25 -9
  195. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/reportingfields.json +1 -0
  196. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/reportingtoken.go +176 -0
  197. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/retry.go +39 -21
  198. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/send.go +261 -75
  199. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/sendfb.go +28 -16
  200. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/clientpayload.go +3 -1
  201. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/noop.go +85 -43
  202. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/signal.go +75 -88
  203. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/container.go +86 -65
  204. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/lidmap.go +186 -0
  205. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/store.go +291 -167
  206. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/00-latest-schema.sql +155 -0
  207. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/03-message-secrets.sql +11 -0
  208. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/04-privacy-tokens.sql +8 -0
  209. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/05-account-jid-format.sql +2 -0
  210. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/06-facebook-uuid.sql +2 -0
  211. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/07-account-lid.sql +2 -0
  212. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/08-lid-mapping.sql +5 -0
  213. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/09-decryption-buffer.sql +10 -0
  214. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/10-chat-db-lid-migration-ts.sql +2 -0
  215. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/upgrades.go +22 -0
  216. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/store.go +107 -56
  217. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/botmap.go +210 -0
  218. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/events/events.go +13 -2
  219. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/group.go +15 -6
  220. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/jid.go +7 -8
  221. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/message.go +18 -0
  222. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/update.go +3 -2
  223. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/upload.go +1 -1
  224. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/user.go +47 -29
  225. slidge_whatsapp/vendor/golang.org/x/exp/LICENSE +27 -0
  226. slidge_whatsapp/vendor/golang.org/x/exp/PATENTS +22 -0
  227. slidge_whatsapp/vendor/golang.org/x/exp/constraints/constraints.go +54 -0
  228. slidge_whatsapp/vendor/golang.org/x/net/http/httpguts/guts.go +50 -0
  229. slidge_whatsapp/vendor/golang.org/x/net/http/httpguts/httplex.go +347 -0
  230. slidge_whatsapp/vendor/golang.org/x/net/http2/.gitignore +2 -0
  231. slidge_whatsapp/vendor/golang.org/x/net/http2/ascii.go +53 -0
  232. slidge_whatsapp/vendor/golang.org/x/net/http2/ciphers.go +641 -0
  233. slidge_whatsapp/vendor/golang.org/x/net/http2/client_conn_pool.go +311 -0
  234. slidge_whatsapp/vendor/golang.org/x/net/http2/config.go +122 -0
  235. slidge_whatsapp/vendor/golang.org/x/net/http2/config_go124.go +61 -0
  236. slidge_whatsapp/vendor/golang.org/x/net/http2/config_pre_go124.go +16 -0
  237. slidge_whatsapp/vendor/golang.org/x/net/http2/databuffer.go +149 -0
  238. slidge_whatsapp/vendor/golang.org/x/net/http2/errors.go +145 -0
  239. slidge_whatsapp/vendor/golang.org/x/net/http2/flow.go +120 -0
  240. slidge_whatsapp/vendor/golang.org/x/net/http2/frame.go +1702 -0
  241. slidge_whatsapp/vendor/golang.org/x/net/http2/gotrack.go +170 -0
  242. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/encode.go +245 -0
  243. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/hpack.go +523 -0
  244. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/huffman.go +226 -0
  245. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/static_table.go +188 -0
  246. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/tables.go +403 -0
  247. slidge_whatsapp/vendor/golang.org/x/net/http2/http2.go +432 -0
  248. slidge_whatsapp/vendor/golang.org/x/net/http2/pipe.go +184 -0
  249. slidge_whatsapp/vendor/golang.org/x/net/http2/server.go +3350 -0
  250. slidge_whatsapp/vendor/golang.org/x/net/http2/timer.go +20 -0
  251. slidge_whatsapp/vendor/golang.org/x/net/http2/transport.go +3287 -0
  252. slidge_whatsapp/vendor/golang.org/x/net/http2/unencrypted.go +32 -0
  253. slidge_whatsapp/vendor/golang.org/x/net/http2/write.go +381 -0
  254. slidge_whatsapp/vendor/golang.org/x/net/http2/writesched.go +251 -0
  255. slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_priority.go +451 -0
  256. slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_random.go +77 -0
  257. slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_roundrobin.go +119 -0
  258. slidge_whatsapp/vendor/golang.org/x/net/idna/go118.go +13 -0
  259. slidge_whatsapp/vendor/golang.org/x/net/idna/idna10.0.0.go +769 -0
  260. slidge_whatsapp/vendor/golang.org/x/net/idna/idna9.0.0.go +717 -0
  261. slidge_whatsapp/vendor/golang.org/x/net/idna/pre_go118.go +11 -0
  262. slidge_whatsapp/vendor/golang.org/x/net/idna/punycode.go +217 -0
  263. slidge_whatsapp/vendor/golang.org/x/net/idna/tables10.0.0.go +4559 -0
  264. slidge_whatsapp/vendor/golang.org/x/net/idna/tables11.0.0.go +4653 -0
  265. slidge_whatsapp/vendor/golang.org/x/net/idna/tables12.0.0.go +4733 -0
  266. slidge_whatsapp/vendor/golang.org/x/net/idna/tables13.0.0.go +4959 -0
  267. slidge_whatsapp/vendor/golang.org/x/net/idna/tables15.0.0.go +5144 -0
  268. slidge_whatsapp/vendor/golang.org/x/net/idna/tables9.0.0.go +4486 -0
  269. slidge_whatsapp/vendor/golang.org/x/net/idna/trie.go +51 -0
  270. slidge_whatsapp/vendor/golang.org/x/net/idna/trie12.0.0.go +30 -0
  271. slidge_whatsapp/vendor/golang.org/x/net/idna/trie13.0.0.go +30 -0
  272. slidge_whatsapp/vendor/golang.org/x/net/idna/trieval.go +119 -0
  273. slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/ascii.go +53 -0
  274. slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/headermap.go +115 -0
  275. slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/request.go +467 -0
  276. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_darwin.go +148 -1
  277. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux.go +16 -26
  278. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +84 -0
  279. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +20 -0
  280. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +84 -0
  281. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +20 -0
  282. slidge_whatsapp/vendor/golang.org/x/sys/windows/security_windows.go +44 -5
  283. slidge_whatsapp/vendor/golang.org/x/sys/windows/syscall_windows.go +4 -2
  284. slidge_whatsapp/vendor/golang.org/x/sys/windows/types_windows.go +239 -0
  285. slidge_whatsapp/vendor/golang.org/x/sys/windows/zsyscall_windows.go +9 -0
  286. slidge_whatsapp/vendor/golang.org/x/text/LICENSE +27 -0
  287. slidge_whatsapp/vendor/golang.org/x/text/PATENTS +22 -0
  288. slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule.go +336 -0
  289. slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go +11 -0
  290. slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go +14 -0
  291. slidge_whatsapp/vendor/golang.org/x/text/transform/transform.go +709 -0
  292. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/bidi.go +359 -0
  293. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/bracket.go +335 -0
  294. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/core.go +1071 -0
  295. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/prop.go +206 -0
  296. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go +1815 -0
  297. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go +1887 -0
  298. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go +1923 -0
  299. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go +1955 -0
  300. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go +2042 -0
  301. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go +1781 -0
  302. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/trieval.go +48 -0
  303. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/composition.go +512 -0
  304. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/forminfo.go +279 -0
  305. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/input.go +109 -0
  306. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/iter.go +458 -0
  307. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/normalize.go +610 -0
  308. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/readwriter.go +125 -0
  309. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go +7657 -0
  310. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go +7693 -0
  311. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go +7710 -0
  312. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go +7760 -0
  313. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go +7907 -0
  314. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go +7637 -0
  315. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/transform.go +88 -0
  316. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/trie.go +54 -0
  317. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb +0 -0
  318. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/filedesc/editions.go +3 -0
  319. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +16 -0
  320. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/strs/{strings_unsafe_go121.go → strings_unsafe.go} +0 -2
  321. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/version/version.go +1 -1
  322. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/merge.go +6 -0
  323. slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +2 -0
  324. slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/{value_unsafe_go121.go → value_unsafe.go} +0 -2
  325. slidge_whatsapp/vendor/modules.txt +52 -13
  326. {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/METADATA +1 -1
  327. {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/RECORD +330 -184
  328. {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/WHEEL +1 -1
  329. slidge_whatsapp/vendor/github.com/rs/zerolog/CNAME +0 -1
  330. slidge_whatsapp/vendor/github.com/rs/zerolog/_config.yml +0 -1
  331. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waAdv/WAAdv.pb.raw +0 -0
  332. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.pb.raw +0 -0
  333. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.pb.raw +0 -0
  334. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCert/WACert.pb.raw +0 -23
  335. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.raw +0 -7
  336. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.pb.raw +0 -0
  337. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/WAWebProtobufsCompanionReg.pb.raw +0 -0
  338. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waConsumerApplication/WAConsumerApplication.pb.raw +0 -0
  339. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.raw +0 -0
  340. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.pb.raw +0 -0
  341. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.pb.raw +0 -0
  342. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.pb.raw +0 -0
  343. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.pb.raw +0 -0
  344. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.pb.raw +0 -0
  345. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/WAMsgTransport.pb.raw +0 -0
  346. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMultiDevice/WAMultiDevice.pb.raw +0 -0
  347. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waServerSync/WAServerSync.pb.raw +0 -0
  348. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.pb.raw +0 -0
  349. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waUserPassword/WAProtobufsUserPassword.pb.raw +0 -0
  350. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waVnameCert/WAWebProtobufsVnameCert.pb.raw +0 -0
  351. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.pb.raw +0 -0
  352. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.pb.raw +0 -0
  353. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrade.go +0 -296
  354. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go +0 -94
  355. slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go +0 -98
  356. {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/LICENSE +0 -0
  357. {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/entry_points.txt +0 -0
@@ -7,6 +7,7 @@
7
7
  package whatsmeow
8
8
 
9
9
  import (
10
+ "context"
10
11
  "crypto/hmac"
11
12
  "crypto/sha256"
12
13
  "encoding/base64"
@@ -129,21 +130,23 @@ var mediaTypeToMMSType = map[MediaType]string{
129
130
  }
130
131
 
131
132
  // DownloadAny loops through the downloadable parts of the given message and downloads the first non-nil item.
132
- func (cli *Client) DownloadAny(msg *waE2E.Message) (data []byte, err error) {
133
+ //
134
+ // Deprecated: it's recommended to find the specific message type you want to download manually and use the Download method instead.
135
+ func (cli *Client) DownloadAny(ctx context.Context, msg *waE2E.Message) (data []byte, err error) {
133
136
  if msg == nil {
134
137
  return nil, ErrNothingDownloadableFound
135
138
  }
136
139
  switch {
137
140
  case msg.ImageMessage != nil:
138
- return cli.Download(msg.ImageMessage)
141
+ return cli.Download(ctx, msg.ImageMessage)
139
142
  case msg.VideoMessage != nil:
140
- return cli.Download(msg.VideoMessage)
143
+ return cli.Download(ctx, msg.VideoMessage)
141
144
  case msg.AudioMessage != nil:
142
- return cli.Download(msg.AudioMessage)
145
+ return cli.Download(ctx, msg.AudioMessage)
143
146
  case msg.DocumentMessage != nil:
144
- return cli.Download(msg.DocumentMessage)
147
+ return cli.Download(ctx, msg.DocumentMessage)
145
148
  case msg.StickerMessage != nil:
146
- return cli.Download(msg.StickerMessage)
149
+ return cli.Download(ctx, msg.StickerMessage)
147
150
  default:
148
151
  return nil, ErrNothingDownloadableFound
149
152
  }
@@ -160,6 +163,10 @@ func getSize(msg DownloadableMessage) int {
160
163
  }
161
164
  }
162
165
 
166
+ // ReturnDownloadWarnings controls whether the Download function returns non-fatal validation warnings.
167
+ // Currently, these include [ErrFileLengthMismatch] and [ErrInvalidMediaSHA256].
168
+ var ReturnDownloadWarnings = true
169
+
163
170
  // DownloadThumbnail downloads a thumbnail from a message.
164
171
  //
165
172
  // This is primarily intended for downloading link preview thumbnails, which are in ExtendedTextMessage:
@@ -167,12 +174,12 @@ func getSize(msg DownloadableMessage) int {
167
174
  // var msg *waE2E.Message
168
175
  // ...
169
176
  // thumbnailImageBytes, err := cli.DownloadThumbnail(msg.GetExtendedTextMessage())
170
- func (cli *Client) DownloadThumbnail(msg DownloadableThumbnail) ([]byte, error) {
177
+ func (cli *Client) DownloadThumbnail(ctx context.Context, msg DownloadableThumbnail) ([]byte, error) {
171
178
  mediaType, ok := classToThumbnailMediaType[msg.ProtoReflect().Descriptor().Name()]
172
179
  if !ok {
173
180
  return nil, fmt.Errorf("%w '%s'", ErrUnknownMediaType, string(msg.ProtoReflect().Descriptor().Name()))
174
181
  } else if len(msg.GetThumbnailDirectPath()) > 0 {
175
- return cli.DownloadMediaWithPath(msg.GetThumbnailDirectPath(), msg.GetThumbnailEncSHA256(), msg.GetThumbnailSHA256(), msg.GetMediaKey(), -1, mediaType, mediaTypeToMMSType[mediaType])
182
+ return cli.DownloadMediaWithPath(ctx, msg.GetThumbnailDirectPath(), msg.GetThumbnailEncSHA256(), msg.GetThumbnailSHA256(), msg.GetMediaKey(), -1, mediaType, mediaTypeToMMSType[mediaType])
176
183
  } else {
177
184
  return nil, ErrNoURLPresent
178
185
  }
@@ -200,7 +207,7 @@ func GetMediaType(msg DownloadableMessage) MediaType {
200
207
  // imageData, err := cli.Download(msg.GetImageMessage())
201
208
  //
202
209
  // You can also use DownloadAny to download the first non-nil sub-message.
203
- func (cli *Client) Download(msg DownloadableMessage) ([]byte, error) {
210
+ func (cli *Client) Download(ctx context.Context, msg DownloadableMessage) ([]byte, error) {
204
211
  if cli == nil {
205
212
  return nil, ErrClientIsNil
206
213
  }
@@ -216,9 +223,9 @@ func (cli *Client) Download(msg DownloadableMessage) ([]byte, error) {
216
223
  isWebWhatsappNetURL = strings.HasPrefix(url, "https://web.whatsapp.net")
217
224
  }
218
225
  if len(url) > 0 && !isWebWhatsappNetURL {
219
- return cli.downloadAndDecrypt(url, msg.GetMediaKey(), mediaType, getSize(msg), msg.GetFileEncSHA256(), msg.GetFileSHA256())
226
+ return cli.downloadAndDecrypt(ctx, url, msg.GetMediaKey(), mediaType, getSize(msg), msg.GetFileEncSHA256(), msg.GetFileSHA256())
220
227
  } else if len(msg.GetDirectPath()) > 0 {
221
- return cli.DownloadMediaWithPath(msg.GetDirectPath(), msg.GetFileEncSHA256(), msg.GetFileSHA256(), msg.GetMediaKey(), getSize(msg), mediaType, mediaTypeToMMSType[mediaType])
228
+ return cli.DownloadMediaWithPath(ctx, msg.GetDirectPath(), msg.GetFileEncSHA256(), msg.GetFileSHA256(), msg.GetMediaKey(), getSize(msg), mediaType, mediaTypeToMMSType[mediaType])
222
229
  } else {
223
230
  if isWebWhatsappNetURL {
224
231
  cli.Log.Warnf("Got a media message with a web.whatsapp.net URL (%s) and no direct path", url)
@@ -227,14 +234,25 @@ func (cli *Client) Download(msg DownloadableMessage) ([]byte, error) {
227
234
  }
228
235
  }
229
236
 
230
- func (cli *Client) DownloadFB(transport *waMediaTransport.WAMediaTransport_Integral, mediaType MediaType) ([]byte, error) {
231
- return cli.DownloadMediaWithPath(transport.GetDirectPath(), transport.GetFileEncSHA256(), transport.GetFileSHA256(), transport.GetMediaKey(), -1, mediaType, mediaTypeToMMSType[mediaType])
237
+ func (cli *Client) DownloadFB(
238
+ ctx context.Context,
239
+ transport *waMediaTransport.WAMediaTransport_Integral,
240
+ mediaType MediaType,
241
+ ) ([]byte, error) {
242
+ return cli.DownloadMediaWithPath(ctx, transport.GetDirectPath(), transport.GetFileEncSHA256(), transport.GetFileSHA256(), transport.GetMediaKey(), -1, mediaType, mediaTypeToMMSType[mediaType])
232
243
  }
233
244
 
234
245
  // DownloadMediaWithPath downloads an attachment by manually specifying the path and encryption details.
235
- func (cli *Client) DownloadMediaWithPath(directPath string, encFileHash, fileHash, mediaKey []byte, fileLength int, mediaType MediaType, mmsType string) (data []byte, err error) {
246
+ func (cli *Client) DownloadMediaWithPath(
247
+ ctx context.Context,
248
+ directPath string,
249
+ encFileHash, fileHash, mediaKey []byte,
250
+ fileLength int,
251
+ mediaType MediaType,
252
+ mmsType string,
253
+ ) (data []byte, err error) {
236
254
  var mediaConn *MediaConn
237
- mediaConn, err = cli.refreshMediaConn(false)
255
+ mediaConn, err = cli.refreshMediaConn(ctx, false)
238
256
  if err != nil {
239
257
  return nil, fmt.Errorf("failed to refresh media connections: %w", err)
240
258
  }
@@ -244,9 +262,14 @@ func (cli *Client) DownloadMediaWithPath(directPath string, encFileHash, fileHas
244
262
  for i, host := range mediaConn.Hosts {
245
263
  // TODO omit hash for unencrypted media?
246
264
  mediaURL := fmt.Sprintf("https://%s%s&hash=%s&mms-type=%s&__wa-mms=", host.Hostname, directPath, base64.URLEncoding.EncodeToString(encFileHash), mmsType)
247
- data, err = cli.downloadAndDecrypt(mediaURL, mediaKey, mediaType, fileLength, encFileHash, fileHash)
248
- if err == nil || errors.Is(err, ErrFileLengthMismatch) || errors.Is(err, ErrInvalidMediaSHA256) ||
249
- errors.Is(err, ErrMediaDownloadFailedWith403) || errors.Is(err, ErrMediaDownloadFailedWith404) || errors.Is(err, ErrMediaDownloadFailedWith410) {
265
+ data, err = cli.downloadAndDecrypt(ctx, mediaURL, mediaKey, mediaType, fileLength, encFileHash, fileHash)
266
+ if err == nil ||
267
+ errors.Is(err, ErrFileLengthMismatch) ||
268
+ errors.Is(err, ErrInvalidMediaSHA256) ||
269
+ errors.Is(err, ErrMediaDownloadFailedWith403) ||
270
+ errors.Is(err, ErrMediaDownloadFailedWith404) ||
271
+ errors.Is(err, ErrMediaDownloadFailedWith410) ||
272
+ errors.Is(err, context.Canceled) {
250
273
  return
251
274
  } else if i >= len(mediaConn.Hosts)-1 {
252
275
  return nil, fmt.Errorf("failed to download media from last host: %w", err)
@@ -256,10 +279,18 @@ func (cli *Client) DownloadMediaWithPath(directPath string, encFileHash, fileHas
256
279
  return
257
280
  }
258
281
 
259
- func (cli *Client) downloadAndDecrypt(url string, mediaKey []byte, appInfo MediaType, fileLength int, fileEncSHA256, fileSHA256 []byte) (data []byte, err error) {
282
+ func (cli *Client) downloadAndDecrypt(
283
+ ctx context.Context,
284
+ url string,
285
+ mediaKey []byte,
286
+ appInfo MediaType,
287
+ fileLength int,
288
+ fileEncSHA256,
289
+ fileSHA256 []byte,
290
+ ) (data []byte, err error) {
260
291
  iv, cipherKey, macKey, _ := getMediaKeys(mediaKey, appInfo)
261
292
  var ciphertext, mac []byte
262
- if ciphertext, mac, err = cli.downloadPossiblyEncryptedMediaWithRetries(url, fileEncSHA256); err != nil {
293
+ if ciphertext, mac, err = cli.downloadPossiblyEncryptedMediaWithRetries(ctx, url, fileEncSHA256); err != nil {
263
294
 
264
295
  } else if mediaKey == nil && fileEncSHA256 == nil && mac == nil {
265
296
  // Unencrypted media, just return the downloaded data
@@ -268,10 +299,12 @@ func (cli *Client) downloadAndDecrypt(url string, mediaKey []byte, appInfo Media
268
299
 
269
300
  } else if data, err = cbcutil.Decrypt(cipherKey, iv, ciphertext); err != nil {
270
301
  err = fmt.Errorf("failed to decrypt file: %w", err)
271
- } else if fileLength >= 0 && len(data) != fileLength {
272
- err = fmt.Errorf("%w: expected %d, got %d", ErrFileLengthMismatch, fileLength, len(data))
273
- } else if len(fileSHA256) == 32 && sha256.Sum256(data) != *(*[32]byte)(fileSHA256) {
274
- err = ErrInvalidMediaSHA256
302
+ } else if ReturnDownloadWarnings {
303
+ if fileLength >= 0 && len(data) != fileLength {
304
+ err = fmt.Errorf("%w: expected %d, got %d", ErrFileLengthMismatch, fileLength, len(data))
305
+ } else if len(fileSHA256) == 32 && sha256.Sum256(data) != *(*[32]byte)(fileSHA256) {
306
+ err = ErrInvalidMediaSHA256
307
+ }
275
308
  }
276
309
  return
277
310
  }
@@ -282,6 +315,9 @@ func getMediaKeys(mediaKey []byte, appInfo MediaType) (iv, cipherKey, macKey, re
282
315
  }
283
316
 
284
317
  func shouldRetryMediaDownload(err error) bool {
318
+ if errors.Is(err, context.Canceled) {
319
+ return false
320
+ }
285
321
  var netErr net.Error
286
322
  var httpErr DownloadHTTPError
287
323
  return errors.As(err, &netErr) ||
@@ -289,12 +325,12 @@ func shouldRetryMediaDownload(err error) bool {
289
325
  (errors.As(err, &httpErr) && retryafter.Should(httpErr.StatusCode, true))
290
326
  }
291
327
 
292
- func (cli *Client) downloadPossiblyEncryptedMediaWithRetries(url string, checksum []byte) (file, mac []byte, err error) {
328
+ func (cli *Client) downloadPossiblyEncryptedMediaWithRetries(ctx context.Context, url string, checksum []byte) (file, mac []byte, err error) {
293
329
  for retryNum := 0; retryNum < 5; retryNum++ {
294
330
  if checksum == nil {
295
- file, err = cli.downloadMedia(url)
331
+ file, err = cli.downloadMedia(ctx, url)
296
332
  } else {
297
- file, mac, err = cli.downloadEncryptedMedia(url, checksum)
333
+ file, mac, err = cli.downloadEncryptedMedia(ctx, url, checksum)
298
334
  }
299
335
  if err == nil || !shouldRetryMediaDownload(err) {
300
336
  return
@@ -305,13 +341,17 @@ func (cli *Client) downloadPossiblyEncryptedMediaWithRetries(url string, checksu
305
341
  retryDuration = retryafter.Parse(httpErr.Response.Header.Get("Retry-After"), retryDuration)
306
342
  }
307
343
  cli.Log.Warnf("Failed to download media due to network error: %v, retrying in %s...", err, retryDuration)
308
- time.Sleep(retryDuration)
344
+ select {
345
+ case <-ctx.Done():
346
+ return nil, nil, ctx.Err()
347
+ case <-time.After(retryDuration):
348
+ }
309
349
  }
310
350
  return
311
351
  }
312
352
 
313
- func (cli *Client) doMediaDownloadRequest(url string) (*http.Response, error) {
314
- req, err := http.NewRequest(http.MethodGet, url, nil)
353
+ func (cli *Client) doMediaDownloadRequest(ctx context.Context, url string) (*http.Response, error) {
354
+ req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
315
355
  if err != nil {
316
356
  return nil, fmt.Errorf("failed to prepare request: %w", err)
317
357
  }
@@ -332,8 +372,8 @@ func (cli *Client) doMediaDownloadRequest(url string) (*http.Response, error) {
332
372
  return resp, nil
333
373
  }
334
374
 
335
- func (cli *Client) downloadMedia(url string) ([]byte, error) {
336
- resp, err := cli.doMediaDownloadRequest(url)
375
+ func (cli *Client) downloadMedia(ctx context.Context, url string) ([]byte, error) {
376
+ resp, err := cli.doMediaDownloadRequest(ctx, url)
337
377
  if err != nil {
338
378
  return nil, err
339
379
  }
@@ -344,8 +384,8 @@ func (cli *Client) downloadMedia(url string) ([]byte, error) {
344
384
 
345
385
  const mediaHMACLength = 10
346
386
 
347
- func (cli *Client) downloadEncryptedMedia(url string, checksum []byte) (file, mac []byte, err error) {
348
- data, err := cli.downloadMedia(url)
387
+ func (cli *Client) downloadEncryptedMedia(ctx context.Context, url string, checksum []byte) (file, mac []byte, err error) {
388
+ data, err := cli.downloadMedia(ctx, url)
349
389
  if err != nil {
350
390
  return
351
391
  } else if len(data) <= mediaHMACLength {
@@ -141,6 +141,7 @@ var (
141
141
  var (
142
142
  ErrOriginalMessageSecretNotFound = errors.New("original message secret key not found")
143
143
  ErrNotEncryptedReactionMessage = errors.New("given message isn't an encrypted reaction message")
144
+ ErrNotEncryptedCommentMessage = errors.New("given message isn't an encrypted comment message")
144
145
  ErrNotPollUpdateMessage = errors.New("given message isn't a poll update message")
145
146
  )
146
147
 
@@ -13,6 +13,7 @@ import (
13
13
  "strings"
14
14
 
15
15
  waBinary "go.mau.fi/whatsmeow/binary"
16
+ "go.mau.fi/whatsmeow/store"
16
17
  "go.mau.fi/whatsmeow/types"
17
18
  "go.mau.fi/whatsmeow/types/events"
18
19
  )
@@ -548,27 +549,43 @@ func (cli *Client) getGroupInfo(ctx context.Context, jid types.JID, lockParticip
548
549
  return groupInfo, err
549
550
  }
550
551
  if lockParticipantCache {
551
- cli.groupParticipantsCacheLock.Lock()
552
- defer cli.groupParticipantsCacheLock.Unlock()
552
+ cli.groupCacheLock.Lock()
553
+ defer cli.groupCacheLock.Unlock()
553
554
  }
554
555
  participants := make([]types.JID, len(groupInfo.Participants))
556
+ lidPairs := make([]store.LIDMapping, len(groupInfo.Participants))
555
557
  for i, part := range groupInfo.Participants {
556
558
  participants[i] = part.JID
559
+ if !part.PhoneNumber.IsEmpty() && !part.LID.IsEmpty() {
560
+ lidPairs[i] = store.LIDMapping{
561
+ LID: part.LID,
562
+ PN: part.PhoneNumber,
563
+ }
564
+ }
565
+ }
566
+ cli.groupCache[jid] = &groupMetaCache{
567
+ AddressingMode: groupInfo.AddressingMode,
568
+ CommunityAnnouncementGroup: groupInfo.IsAnnounce && groupInfo.IsDefaultSubGroup,
569
+ Members: participants,
570
+ }
571
+ err = cli.Store.LIDs.PutManyLIDMappings(ctx, lidPairs)
572
+ if err != nil {
573
+ cli.Log.Warnf("Failed to store LID mappings for members of %s: %v", jid, err)
557
574
  }
558
- cli.groupParticipantsCache[jid] = participants
559
575
  return groupInfo, nil
560
576
  }
561
577
 
562
- func (cli *Client) getGroupMembers(ctx context.Context, jid types.JID) ([]types.JID, error) {
563
- cli.groupParticipantsCacheLock.Lock()
564
- defer cli.groupParticipantsCacheLock.Unlock()
565
- if _, ok := cli.groupParticipantsCache[jid]; !ok {
566
- _, err := cli.getGroupInfo(ctx, jid, false)
567
- if err != nil {
568
- return nil, err
569
- }
578
+ func (cli *Client) getCachedGroupData(ctx context.Context, jid types.JID) (*groupMetaCache, error) {
579
+ cli.groupCacheLock.Lock()
580
+ defer cli.groupCacheLock.Unlock()
581
+ if val, ok := cli.groupCache[jid]; ok {
582
+ return val, nil
583
+ }
584
+ _, err := cli.getGroupInfo(ctx, jid, false)
585
+ if err != nil {
586
+ return nil, err
570
587
  }
571
- return cli.groupParticipantsCache[jid], nil
588
+ return cli.groupCache[jid], nil
572
589
  }
573
590
 
574
591
  func parseParticipant(childAG *waBinary.AttrUtility, child *waBinary.Node) types.GroupParticipant {
@@ -577,12 +594,14 @@ func parseParticipant(childAG *waBinary.AttrUtility, child *waBinary.Node) types
577
594
  IsAdmin: pcpType == "admin" || pcpType == "superadmin",
578
595
  IsSuperAdmin: pcpType == "superadmin",
579
596
  JID: childAG.JID("jid"),
580
- LID: childAG.OptionalJIDOrEmpty("lid"),
581
597
  DisplayName: childAG.OptionalString("display_name"),
582
598
  }
583
- if participant.JID.Server == types.HiddenUserServer && participant.LID.IsEmpty() {
599
+ if participant.JID.Server == types.HiddenUserServer {
584
600
  participant.LID = participant.JID
585
- //participant.JID = types.EmptyJID
601
+ participant.PhoneNumber = childAG.OptionalJIDOrEmpty("phone_number")
602
+ } else if participant.JID.Server == types.DefaultUserServer {
603
+ participant.PhoneNumber = participant.JID
604
+ participant.LID = childAG.OptionalJIDOrEmpty("lid")
586
605
  }
587
606
  if errorCode := childAG.OptionalInt("error"); errorCode != 0 {
588
607
  participant.Error = errorCode
@@ -604,15 +623,19 @@ func (cli *Client) parseGroupNode(groupNode *waBinary.Node) (*types.GroupInfo, e
604
623
 
605
624
  group.JID = types.NewJID(ag.String("id"), types.GroupServer)
606
625
  group.OwnerJID = ag.OptionalJIDOrEmpty("creator")
626
+ group.OwnerPN = ag.OptionalJIDOrEmpty("creator_pn")
607
627
 
608
628
  group.Name = ag.String("subject")
609
629
  group.NameSetAt = ag.UnixTime("s_t")
610
630
  group.NameSetBy = ag.OptionalJIDOrEmpty("s_o")
631
+ group.NameSetByPN = ag.OptionalJIDOrEmpty("s_o_pn")
611
632
 
612
633
  group.GroupCreated = ag.UnixTime("creation")
634
+ group.CreatorCountryCode = ag.OptionalString("creator_country_code")
613
635
 
614
636
  group.AnnounceVersionID = ag.OptionalString("a_v_id")
615
637
  group.ParticipantVersionID = ag.OptionalString("p_v_id")
638
+ group.AddressingMode = types.AddressingMode(ag.OptionalString("addressing_mode"))
616
639
 
617
640
  for _, child := range groupNode.GetChildren() {
618
641
  childAG := child.AttrGetter()
@@ -626,6 +649,7 @@ func (cli *Client) parseGroupNode(groupNode *waBinary.Node) (*types.GroupInfo, e
626
649
  group.Topic = string(topicBytes)
627
650
  group.TopicID = childAG.String("id")
628
651
  group.TopicSetBy = childAG.OptionalJIDOrEmpty("participant")
652
+ group.TopicSetByPN = childAG.OptionalJIDOrEmpty("participant_pn") // TODO confirm field name
629
653
  group.TopicSetAt = childAG.UnixTime("t")
630
654
  }
631
655
  case "announcement":
@@ -691,16 +715,20 @@ func parseParticipantList(node *waBinary.Node) (participants []types.JID) {
691
715
  return
692
716
  }
693
717
 
694
- func (cli *Client) parseGroupCreate(node *waBinary.Node) (*events.JoinedGroup, error) {
718
+ func (cli *Client) parseGroupCreate(parentNode, node *waBinary.Node) (*events.JoinedGroup, error) {
695
719
  groupNode, ok := node.GetOptionalChildByTag("group")
696
720
  if !ok {
697
721
  return nil, fmt.Errorf("group create notification didn't contain group info")
698
722
  }
699
723
  var evt events.JoinedGroup
724
+ pag := parentNode.AttrGetter()
700
725
  ag := node.AttrGetter()
701
726
  evt.Reason = ag.OptionalString("reason")
702
727
  evt.CreateKey = ag.OptionalString("key")
703
728
  evt.Type = ag.OptionalString("type")
729
+ evt.Sender = pag.OptionalJID("participant")
730
+ evt.SenderPN = pag.OptionalJID("participant_pn")
731
+ evt.Notify = pag.OptionalString("notify")
704
732
  info, err := cli.parseGroupNode(&groupNode)
705
733
  if err != nil {
706
734
  return nil, fmt.Errorf("failed to parse group info in create notification: %w", err)
@@ -715,6 +743,7 @@ func (cli *Client) parseGroupChange(node *waBinary.Node) (*events.GroupInfo, err
715
743
  evt.JID = ag.JID("from")
716
744
  evt.Notify = ag.OptionalString("notify")
717
745
  evt.Sender = ag.OptionalJID("participant")
746
+ evt.SenderPN = ag.OptionalJID("participant_pn")
718
747
  evt.Timestamp = ag.UnixTime("t")
719
748
  if !ag.OK() {
720
749
  return nil, fmt.Errorf("group change doesn't contain required attributes: %w", ag.Error())
@@ -723,8 +752,8 @@ func (cli *Client) parseGroupChange(node *waBinary.Node) (*events.GroupInfo, err
723
752
  for _, child := range node.GetChildren() {
724
753
  cag := child.AttrGetter()
725
754
  if child.Tag == "add" || child.Tag == "remove" || child.Tag == "promote" || child.Tag == "demote" {
726
- evt.PrevParticipantVersionID = cag.String("prev_v_id")
727
- evt.ParticipantVersionID = cag.String("v_id")
755
+ evt.PrevParticipantVersionID = cag.OptionalString("prev_v_id")
756
+ evt.ParticipantVersionID = cag.OptionalString("v_id")
728
757
  }
729
758
  switch child.Tag {
730
759
  case "add":
@@ -744,9 +773,10 @@ func (cli *Client) parseGroupChange(node *waBinary.Node) (*events.GroupInfo, err
744
773
  evt.Delete = &types.GroupDelete{Deleted: true, DeleteReason: cag.String("reason")}
745
774
  case "subject":
746
775
  evt.Name = &types.GroupName{
747
- Name: cag.String("subject"),
748
- NameSetAt: cag.UnixTime("s_t"),
749
- NameSetBy: cag.OptionalJIDOrEmpty("s_o"),
776
+ Name: cag.String("subject"),
777
+ NameSetAt: cag.UnixTime("s_t"),
778
+ NameSetBy: cag.OptionalJIDOrEmpty("s_o"),
779
+ NameSetByPN: cag.OptionalJIDOrEmpty("s_o_pn"),
750
780
  }
751
781
  case "description":
752
782
  var topicStr string
@@ -833,40 +863,40 @@ func (cli *Client) parseGroupChange(node *waBinary.Node) (*events.GroupInfo, err
833
863
  }
834
864
 
835
865
  func (cli *Client) updateGroupParticipantCache(evt *events.GroupInfo) {
866
+ // TODO can the addressing mode change here?
836
867
  if len(evt.Join) == 0 && len(evt.Leave) == 0 {
837
868
  return
838
869
  }
839
- cli.groupParticipantsCacheLock.Lock()
840
- defer cli.groupParticipantsCacheLock.Unlock()
841
- cached, ok := cli.groupParticipantsCache[evt.JID]
870
+ cli.groupCacheLock.Lock()
871
+ defer cli.groupCacheLock.Unlock()
872
+ cached, ok := cli.groupCache[evt.JID]
842
873
  if !ok {
843
874
  return
844
875
  }
845
876
  Outer:
846
877
  for _, jid := range evt.Join {
847
- for _, existingJID := range cached {
878
+ for _, existingJID := range cached.Members {
848
879
  if jid == existingJID {
849
880
  continue Outer
850
881
  }
851
882
  }
852
- cached = append(cached, jid)
883
+ cached.Members = append(cached.Members, jid)
853
884
  }
854
885
  for _, jid := range evt.Leave {
855
- for i, existingJID := range cached {
886
+ for i, existingJID := range cached.Members {
856
887
  if existingJID == jid {
857
- cached[i] = cached[len(cached)-1]
858
- cached = cached[:len(cached)-1]
888
+ cached.Members[i] = cached.Members[len(cached.Members)-1]
889
+ cached.Members = cached.Members[:len(cached.Members)-1]
859
890
  break
860
891
  }
861
892
  }
862
893
  }
863
- cli.groupParticipantsCache[evt.JID] = cached
864
894
  }
865
895
 
866
896
  func (cli *Client) parseGroupNotification(node *waBinary.Node) (any, error) {
867
897
  children := node.GetChildren()
868
898
  if len(children) == 1 && children[0].Tag == "create" {
869
- return cli.parseGroupCreate(&children[0])
899
+ return cli.parseGroupCreate(node, &children[0])
870
900
  } else {
871
901
  groupChange, err := cli.parseGroupChange(node)
872
902
  if err != nil {