slidge-whatsapp 0.2.5__cp311-cp311-manylinux_2_36_aarch64.whl → 0.2.7__cp311-cp311-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-311-aarch64-linux-gnu.h +170 -170
  6. slidge_whatsapp/generated/_whatsapp.cpython-311-aarch64-linux-gnu.so +0 -0
  7. slidge_whatsapp/generated/build.py +135 -135
  8. slidge_whatsapp/generated/whatsapp.c +1496 -1496
  9. slidge_whatsapp/generated/whatsapp.go +1137 -1137
  10. slidge_whatsapp/generated/whatsapp.py +1216 -1216
  11. slidge_whatsapp/generated/whatsapp_go.h +170 -170
  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
@@ -0,0 +1,43 @@
1
+ // Copyright (c) 2024 Tulir Asokan
2
+ //
3
+ // This Source Code Form is subject to the terms of the Mozilla Public
4
+ // License, v. 2.0. If a copy of the MPL was not distributed with this
5
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
+
7
+ package ptr
8
+
9
+ // Clone creates a shallow copy of the given pointer.
10
+ func Clone[T any](val *T) *T {
11
+ if val == nil {
12
+ return nil
13
+ }
14
+ valCopy := *val
15
+ return &valCopy
16
+ }
17
+
18
+ // Ptr returns a pointer to the given value.
19
+ func Ptr[T any](val T) *T {
20
+ return &val
21
+ }
22
+
23
+ // NonZero returns a pointer to the given comparable value, unless the value is the type's zero value.
24
+ func NonZero[T comparable](val T) *T {
25
+ var zero T
26
+ return NonDefault(val, zero)
27
+ }
28
+
29
+ // NonDefault returns a pointer to the first parameter, unless it is equal to the second parameter.
30
+ func NonDefault[T comparable](val, def T) *T {
31
+ if val == def {
32
+ return nil
33
+ }
34
+ return &val
35
+ }
36
+
37
+ // Val returns the value of the given pointer, or the zero value of the type if the pointer is nil.
38
+ func Val[T any](ptr *T) (val T) {
39
+ if ptr != nil {
40
+ val = *ptr
41
+ }
42
+ return
43
+ }
@@ -8,6 +8,7 @@ package appstate
8
8
 
9
9
  import (
10
10
  "bytes"
11
+ "context"
11
12
  "crypto/sha256"
12
13
  "encoding/json"
13
14
  "fmt"
@@ -30,9 +31,9 @@ type PatchList struct {
30
31
  }
31
32
 
32
33
  // DownloadExternalFunc is a function that can download a blob of external app state patches.
33
- type DownloadExternalFunc func(*waServerSync.ExternalBlobReference) ([]byte, error)
34
+ type DownloadExternalFunc func(context.Context, *waServerSync.ExternalBlobReference) ([]byte, error)
34
35
 
35
- func parseSnapshotInternal(collection *waBinary.Node, downloadExternal DownloadExternalFunc) (*waServerSync.SyncdSnapshot, error) {
36
+ func parseSnapshotInternal(ctx context.Context, collection *waBinary.Node, downloadExternal DownloadExternalFunc) (*waServerSync.SyncdSnapshot, error) {
36
37
  snapshotNode := collection.GetChildByTag("snapshot")
37
38
  rawSnapshot, ok := snapshotNode.Content.([]byte)
38
39
  if snapshotNode.Tag != "snapshot" || !ok {
@@ -44,7 +45,7 @@ func parseSnapshotInternal(collection *waBinary.Node, downloadExternal DownloadE
44
45
  return nil, fmt.Errorf("failed to unmarshal snapshot: %w", err)
45
46
  }
46
47
  var rawData []byte
47
- rawData, err = downloadExternal(&snapshot)
48
+ rawData, err = downloadExternal(ctx, &snapshot)
48
49
  if err != nil {
49
50
  return nil, fmt.Errorf("failed to download external mutations: %w", err)
50
51
  }
@@ -56,7 +57,7 @@ func parseSnapshotInternal(collection *waBinary.Node, downloadExternal DownloadE
56
57
  return &downloaded, nil
57
58
  }
58
59
 
59
- func parsePatchListInternal(collection *waBinary.Node, downloadExternal DownloadExternalFunc) ([]*waServerSync.SyncdPatch, error) {
60
+ func parsePatchListInternal(ctx context.Context, collection *waBinary.Node, downloadExternal DownloadExternalFunc) ([]*waServerSync.SyncdPatch, error) {
60
61
  patchesNode := collection.GetChildByTag("patches")
61
62
  patchNodes := patchesNode.GetChildren()
62
63
  patches := make([]*waServerSync.SyncdPatch, 0, len(patchNodes))
@@ -72,7 +73,7 @@ func parsePatchListInternal(collection *waBinary.Node, downloadExternal Download
72
73
  }
73
74
  if patch.GetExternalMutations() != nil && downloadExternal != nil {
74
75
  var rawData []byte
75
- rawData, err = downloadExternal(patch.GetExternalMutations())
76
+ rawData, err = downloadExternal(ctx, patch.GetExternalMutations())
76
77
  if err != nil {
77
78
  return nil, fmt.Errorf("failed to download external mutations: %w", err)
78
79
  }
@@ -91,14 +92,14 @@ func parsePatchListInternal(collection *waBinary.Node, downloadExternal Download
91
92
  }
92
93
 
93
94
  // ParsePatchList will decode an XML node containing app state patches, including downloading any external blobs.
94
- func ParsePatchList(node *waBinary.Node, downloadExternal DownloadExternalFunc) (*PatchList, error) {
95
+ func ParsePatchList(ctx context.Context, node *waBinary.Node, downloadExternal DownloadExternalFunc) (*PatchList, error) {
95
96
  collection := node.GetChildByTag("sync", "collection")
96
97
  ag := collection.AttrGetter()
97
- snapshot, err := parseSnapshotInternal(&collection, downloadExternal)
98
+ snapshot, err := parseSnapshotInternal(ctx, &collection, downloadExternal)
98
99
  if err != nil {
99
100
  return nil, err
100
101
  }
101
- patches, err := parsePatchListInternal(&collection, downloadExternal)
102
+ patches, err := parsePatchListInternal(ctx, &collection, downloadExternal)
102
103
  if err != nil {
103
104
  return nil, err
104
105
  }
@@ -117,10 +118,10 @@ type patchOutput struct {
117
118
  Mutations []Mutation
118
119
  }
119
120
 
120
- func (proc *Processor) decodeMutations(mutations []*waServerSync.SyncdMutation, out *patchOutput, validateMACs bool) error {
121
+ func (proc *Processor) decodeMutations(ctx context.Context, mutations []*waServerSync.SyncdMutation, out *patchOutput, validateMACs bool) error {
121
122
  for i, mutation := range mutations {
122
123
  keyID := mutation.GetRecord().GetKeyID().GetID()
123
- keys, err := proc.getAppStateKey(keyID)
124
+ keys, err := proc.getAppStateKey(ctx, keyID)
124
125
  if err != nil {
125
126
  return fmt.Errorf("failed to get key %X to decode mutation: %w", keyID, err)
126
127
  }
@@ -173,23 +174,23 @@ func (proc *Processor) decodeMutations(mutations []*waServerSync.SyncdMutation,
173
174
  return nil
174
175
  }
175
176
 
176
- func (proc *Processor) storeMACs(name WAPatchName, currentState HashState, out *patchOutput) {
177
- err := proc.Store.AppState.PutAppStateVersion(string(name), currentState.Version, currentState.Hash)
177
+ func (proc *Processor) storeMACs(ctx context.Context, name WAPatchName, currentState HashState, out *patchOutput) {
178
+ err := proc.Store.AppState.PutAppStateVersion(ctx, string(name), currentState.Version, currentState.Hash)
178
179
  if err != nil {
179
180
  proc.Log.Errorf("Failed to update app state version in the database: %v", err)
180
181
  }
181
- err = proc.Store.AppState.DeleteAppStateMutationMACs(string(name), out.RemovedMACs)
182
+ err = proc.Store.AppState.DeleteAppStateMutationMACs(ctx, string(name), out.RemovedMACs)
182
183
  if err != nil {
183
184
  proc.Log.Errorf("Failed to remove deleted mutation MACs from the database: %v", err)
184
185
  }
185
- err = proc.Store.AppState.PutAppStateMutationMACs(string(name), currentState.Version, out.AddedMACs)
186
+ err = proc.Store.AppState.PutAppStateMutationMACs(ctx, string(name), currentState.Version, out.AddedMACs)
186
187
  if err != nil {
187
188
  proc.Log.Errorf("Failed to insert added mutation MACs to the database: %v", err)
188
189
  }
189
190
  }
190
191
 
191
- func (proc *Processor) validateSnapshotMAC(name WAPatchName, currentState HashState, keyID, expectedSnapshotMAC []byte) (keys ExpandedAppStateKeys, err error) {
192
- keys, err = proc.getAppStateKey(keyID)
192
+ func (proc *Processor) validateSnapshotMAC(ctx context.Context, name WAPatchName, currentState HashState, keyID, expectedSnapshotMAC []byte) (keys ExpandedAppStateKeys, err error) {
193
+ keys, err = proc.getAppStateKey(ctx, keyID)
193
194
  if err != nil {
194
195
  err = fmt.Errorf("failed to get key %X to verify patch v%d MACs: %w", keyID, currentState.Version, err)
195
196
  return
@@ -201,7 +202,7 @@ func (proc *Processor) validateSnapshotMAC(name WAPatchName, currentState HashSt
201
202
  return
202
203
  }
203
204
 
204
- func (proc *Processor) decodeSnapshot(name WAPatchName, ss *waServerSync.SyncdSnapshot, initialState HashState, validateMACs bool, newMutationsInput []Mutation) (newMutations []Mutation, currentState HashState, err error) {
205
+ func (proc *Processor) decodeSnapshot(ctx context.Context, name WAPatchName, ss *waServerSync.SyncdSnapshot, initialState HashState, validateMACs bool, newMutationsInput []Mutation) (newMutations []Mutation, currentState HashState, err error) {
205
206
  currentState = initialState
206
207
  currentState.Version = ss.GetVersion().GetVersion()
207
208
 
@@ -226,7 +227,7 @@ func (proc *Processor) decodeSnapshot(name WAPatchName, ss *waServerSync.SyncdSn
226
227
  }
227
228
 
228
229
  if validateMACs {
229
- _, err = proc.validateSnapshotMAC(name, currentState, ss.GetKeyID().GetID(), ss.GetMac())
230
+ _, err = proc.validateSnapshotMAC(ctx, name, currentState, ss.GetKeyID().GetID(), ss.GetMac())
230
231
  if err != nil {
231
232
  return
232
233
  }
@@ -234,18 +235,18 @@ func (proc *Processor) decodeSnapshot(name WAPatchName, ss *waServerSync.SyncdSn
234
235
 
235
236
  var out patchOutput
236
237
  out.Mutations = newMutationsInput
237
- err = proc.decodeMutations(encryptedMutations, &out, validateMACs)
238
+ err = proc.decodeMutations(ctx, encryptedMutations, &out, validateMACs)
238
239
  if err != nil {
239
240
  err = fmt.Errorf("failed to decode snapshot of v%d: %w", currentState.Version, err)
240
241
  return
241
242
  }
242
- proc.storeMACs(name, currentState, &out)
243
+ proc.storeMACs(ctx, name, currentState, &out)
243
244
  newMutations = out.Mutations
244
245
  return
245
246
  }
246
247
 
247
248
  // DecodePatches will decode all the patches in a PatchList into a list of app state mutations.
248
- func (proc *Processor) DecodePatches(list *PatchList, initialState HashState, validateMACs bool) (newMutations []Mutation, currentState HashState, err error) {
249
+ func (proc *Processor) DecodePatches(ctx context.Context, list *PatchList, initialState HashState, validateMACs bool) (newMutations []Mutation, currentState HashState, err error) {
249
250
  currentState = initialState
250
251
  var expectedLength int
251
252
  if list.Snapshot != nil {
@@ -257,7 +258,7 @@ func (proc *Processor) DecodePatches(list *PatchList, initialState HashState, va
257
258
  newMutations = make([]Mutation, 0, expectedLength)
258
259
 
259
260
  if list.Snapshot != nil {
260
- newMutations, currentState, err = proc.decodeSnapshot(list.Name, list.Snapshot, currentState, validateMACs, newMutations)
261
+ newMutations, currentState, err = proc.decodeSnapshot(ctx, list.Name, list.Snapshot, currentState, validateMACs, newMutations)
261
262
  if err != nil {
262
263
  return
263
264
  }
@@ -275,7 +276,7 @@ func (proc *Processor) DecodePatches(list *PatchList, initialState HashState, va
275
276
  }
276
277
  }
277
278
  // Previous value not found in current patch, look in the database
278
- return proc.Store.AppState.GetAppStateMutationMAC(string(list.Name), indexMAC)
279
+ return proc.Store.AppState.GetAppStateMutationMAC(ctx, string(list.Name), indexMAC)
279
280
  })
280
281
  if len(warn) > 0 {
281
282
  proc.Log.Warnf("Warnings while updating hash for %s: %+v", list.Name, warn)
@@ -287,7 +288,7 @@ func (proc *Processor) DecodePatches(list *PatchList, initialState HashState, va
287
288
 
288
289
  if validateMACs {
289
290
  var keys ExpandedAppStateKeys
290
- keys, err = proc.validateSnapshotMAC(list.Name, currentState, patch.GetKeyID().GetID(), patch.GetSnapshotMac())
291
+ keys, err = proc.validateSnapshotMAC(ctx, list.Name, currentState, patch.GetKeyID().GetID(), patch.GetSnapshotMac())
291
292
  if err != nil {
292
293
  return
293
294
  }
@@ -300,11 +301,11 @@ func (proc *Processor) DecodePatches(list *PatchList, initialState HashState, va
300
301
 
301
302
  var out patchOutput
302
303
  out.Mutations = newMutations
303
- err = proc.decodeMutations(patch.GetMutations(), &out, validateMACs)
304
+ err = proc.decodeMutations(ctx, patch.GetMutations(), &out, validateMACs)
304
305
  if err != nil {
305
306
  return
306
307
  }
307
- proc.storeMACs(list.Name, currentState, &out)
308
+ proc.storeMACs(ctx, list.Name, currentState, &out)
308
309
  newMutations = out.Mutations
309
310
  }
310
311
  return
@@ -1,6 +1,7 @@
1
1
  package appstate
2
2
 
3
3
  import (
4
+ "context"
4
5
  "crypto/sha256"
5
6
  "encoding/json"
6
7
  "fmt"
@@ -245,8 +246,8 @@ func BuildStar(target, sender types.JID, messageID types.MessageID, fromMe, star
245
246
  }
246
247
  }
247
248
 
248
- func (proc *Processor) EncodePatch(keyID []byte, state HashState, patchInfo PatchInfo) ([]byte, error) {
249
- keys, err := proc.getAppStateKey(keyID)
249
+ func (proc *Processor) EncodePatch(ctx context.Context, keyID []byte, state HashState, patchInfo PatchInfo) ([]byte, error) {
250
+ keys, err := proc.getAppStateKey(ctx, keyID)
250
251
  if err != nil {
251
252
  return nil, fmt.Errorf("failed to get app state key details with key ID %x: %w", keyID, err)
252
253
  }
@@ -295,7 +296,7 @@ func (proc *Processor) EncodePatch(keyID []byte, state HashState, patchInfo Patc
295
296
  }
296
297
 
297
298
  warn, err := state.updateHash(mutations, func(indexMAC []byte, _ int) ([]byte, error) {
298
- return proc.Store.AppState.GetAppStateMutationMAC(string(patchInfo.Type), indexMAC)
299
+ return proc.Store.AppState.GetAppStateMutationMAC(ctx, string(patchInfo.Type), indexMAC)
299
300
  })
300
301
  if len(warn) > 0 {
301
302
  proc.Log.Warnf("Warnings while updating hash for %s (sending new app state): %+v", patchInfo.Type, warn)
@@ -8,6 +8,7 @@
8
8
  package appstate
9
9
 
10
10
  import (
11
+ "context"
11
12
  "encoding/base64"
12
13
  "sync"
13
14
 
@@ -82,7 +83,7 @@ func expandAppStateKeys(keyData []byte) (keys ExpandedAppStateKeys) {
82
83
  return ExpandedAppStateKeys{appStateKeyExpanded[0:32], appStateKeyExpanded[32:64], appStateKeyExpanded[64:96], appStateKeyExpanded[96:128], appStateKeyExpanded[128:160]}
83
84
  }
84
85
 
85
- func (proc *Processor) getAppStateKey(keyID []byte) (keys ExpandedAppStateKeys, err error) {
86
+ func (proc *Processor) getAppStateKey(ctx context.Context, keyID []byte) (keys ExpandedAppStateKeys, err error) {
86
87
  keyCacheID := base64.RawStdEncoding.EncodeToString(keyID)
87
88
  var ok bool
88
89
 
@@ -92,7 +93,7 @@ func (proc *Processor) getAppStateKey(keyID []byte) (keys ExpandedAppStateKeys,
92
93
  keys, ok = proc.keyCache[keyCacheID]
93
94
  if !ok {
94
95
  var keyData *store.AppStateSyncKey
95
- keyData, err = proc.Store.AppStateKeys.GetAppStateSyncKey(keyID)
96
+ keyData, err = proc.Store.AppStateKeys.GetAppStateSyncKey(ctx, keyID)
96
97
  if keyData != nil {
97
98
  keys = expandAppStateKeys(keyData.Data)
98
99
  proc.keyCache[keyCacheID] = keys
@@ -103,7 +104,7 @@ func (proc *Processor) getAppStateKey(keyID []byte) (keys ExpandedAppStateKeys,
103
104
  return
104
105
  }
105
106
 
106
- func (proc *Processor) GetMissingKeyIDs(pl *PatchList) [][]byte {
107
+ func (proc *Processor) GetMissingKeyIDs(ctx context.Context, pl *PatchList) [][]byte {
107
108
  cache := make(map[string]bool)
108
109
  var missingKeys [][]byte
109
110
  checkMissing := func(keyID []byte) {
@@ -113,7 +114,7 @@ func (proc *Processor) GetMissingKeyIDs(pl *PatchList) [][]byte {
113
114
  stringKeyID := base64.RawStdEncoding.EncodeToString(keyID)
114
115
  _, alreadyAdded := cache[stringKeyID]
115
116
  if !alreadyAdded {
116
- keyData, err := proc.Store.AppStateKeys.GetAppStateSyncKey(keyID)
117
+ keyData, err := proc.Store.AppStateKeys.GetAppStateSyncKey(ctx, keyID)
117
118
  if err != nil {
118
119
  proc.Log.Warnf("Error fetching key %X while checking if it's missing: %v", keyID, err)
119
120
  }
@@ -24,19 +24,19 @@ import (
24
24
 
25
25
  // FetchAppState fetches updates to the given type of app state. If fullSync is true, the current
26
26
  // cached state will be removed and all app state patches will be re-fetched from the server.
27
- func (cli *Client) FetchAppState(name appstate.WAPatchName, fullSync, onlyIfNotSynced bool) error {
27
+ func (cli *Client) FetchAppState(ctx context.Context, name appstate.WAPatchName, fullSync, onlyIfNotSynced bool) error {
28
28
  if cli == nil {
29
29
  return ErrClientIsNil
30
30
  }
31
31
  cli.appStateSyncLock.Lock()
32
32
  defer cli.appStateSyncLock.Unlock()
33
33
  if fullSync {
34
- err := cli.Store.AppState.DeleteAppStateVersion(string(name))
34
+ err := cli.Store.AppState.DeleteAppStateVersion(ctx, string(name))
35
35
  if err != nil {
36
36
  return fmt.Errorf("failed to reset app state %s version: %w", name, err)
37
37
  }
38
38
  }
39
- version, hash, err := cli.Store.AppState.GetAppStateVersion(string(name))
39
+ version, hash, err := cli.Store.AppState.GetAppStateVersion(ctx, string(name))
40
40
  if err != nil {
41
41
  return fmt.Errorf("failed to get app state %s version: %w", name, err)
42
42
  }
@@ -51,17 +51,17 @@ func (cli *Client) FetchAppState(name appstate.WAPatchName, fullSync, onlyIfNotS
51
51
  hasMore := true
52
52
  wantSnapshot := fullSync
53
53
  for hasMore {
54
- patches, err := cli.fetchAppStatePatches(name, state.Version, wantSnapshot)
54
+ patches, err := cli.fetchAppStatePatches(ctx, name, state.Version, wantSnapshot)
55
55
  wantSnapshot = false
56
56
  if err != nil {
57
57
  return fmt.Errorf("failed to fetch app state %s patches: %w", name, err)
58
58
  }
59
59
  hasMore = patches.HasMorePatches
60
60
 
61
- mutations, newState, err := cli.appStateProc.DecodePatches(patches, state, true)
61
+ mutations, newState, err := cli.appStateProc.DecodePatches(ctx, patches, state, true)
62
62
  if err != nil {
63
63
  if errors.Is(err, appstate.ErrKeyNotFound) {
64
- go cli.requestMissingAppStateKeys(context.TODO(), patches)
64
+ go cli.requestMissingAppStateKeys(context.WithoutCancel(ctx), patches)
65
65
  }
66
66
  return fmt.Errorf("failed to decode app state %s patches: %w", name, err)
67
67
  }
@@ -71,14 +71,14 @@ func (cli *Client) FetchAppState(name appstate.WAPatchName, fullSync, onlyIfNotS
71
71
  var contacts []store.ContactEntry
72
72
  mutations, contacts = cli.filterContacts(mutations)
73
73
  cli.Log.Debugf("Mass inserting app state snapshot with %d contacts into the store", len(contacts))
74
- err = cli.Store.Contacts.PutAllContactNames(contacts)
74
+ err = cli.Store.Contacts.PutAllContactNames(ctx, contacts)
75
75
  if err != nil {
76
76
  // This is a fairly serious failure, so just abort the whole thing
77
77
  return fmt.Errorf("failed to update contact store with data from snapshot: %v", err)
78
78
  }
79
79
  }
80
80
  for _, mutation := range mutations {
81
- cli.dispatchAppState(mutation, fullSync, cli.EmitAppStateEventsOnFullSync)
81
+ cli.dispatchAppState(ctx, mutation, fullSync, cli.EmitAppStateEventsOnFullSync)
82
82
  }
83
83
  }
84
84
  if fullSync {
@@ -109,7 +109,7 @@ func (cli *Client) filterContacts(mutations []appstate.Mutation) ([]appstate.Mut
109
109
  return filteredMutations, contacts
110
110
  }
111
111
 
112
- func (cli *Client) dispatchAppState(mutation appstate.Mutation, fullSync bool, emitOnFullSync bool) {
112
+ func (cli *Client) dispatchAppState(ctx context.Context, mutation appstate.Mutation, fullSync bool, emitOnFullSync bool) {
113
113
  dispatchEvts := !fullSync || emitOnFullSync
114
114
 
115
115
  if mutation.Operation != waServerSync.SyncdMutation_SET {
@@ -137,25 +137,25 @@ func (cli *Client) dispatchAppState(mutation appstate.Mutation, fullSync bool, e
137
137
  mutedUntil = time.UnixMilli(act.GetMuteEndTimestamp())
138
138
  }
139
139
  if cli.Store.ChatSettings != nil {
140
- storeUpdateError = cli.Store.ChatSettings.PutMutedUntil(jid, mutedUntil)
140
+ storeUpdateError = cli.Store.ChatSettings.PutMutedUntil(ctx, jid, mutedUntil)
141
141
  }
142
142
  case appstate.IndexPin:
143
143
  act := mutation.Action.GetPinAction()
144
144
  eventToDispatch = &events.Pin{JID: jid, Timestamp: ts, Action: act, FromFullSync: fullSync}
145
145
  if cli.Store.ChatSettings != nil {
146
- storeUpdateError = cli.Store.ChatSettings.PutPinned(jid, act.GetPinned())
146
+ storeUpdateError = cli.Store.ChatSettings.PutPinned(ctx, jid, act.GetPinned())
147
147
  }
148
148
  case appstate.IndexArchive:
149
149
  act := mutation.Action.GetArchiveChatAction()
150
150
  eventToDispatch = &events.Archive{JID: jid, Timestamp: ts, Action: act, FromFullSync: fullSync}
151
151
  if cli.Store.ChatSettings != nil {
152
- storeUpdateError = cli.Store.ChatSettings.PutArchived(jid, act.GetArchived())
152
+ storeUpdateError = cli.Store.ChatSettings.PutArchived(ctx, jid, act.GetArchived())
153
153
  }
154
154
  case appstate.IndexContact:
155
155
  act := mutation.Action.GetContactAction()
156
156
  eventToDispatch = &events.Contact{JID: jid, Timestamp: ts, Action: act, FromFullSync: fullSync}
157
157
  if cli.Store.Contacts != nil {
158
- storeUpdateError = cli.Store.Contacts.PutContactName(jid, act.GetFirstName(), act.GetFullName())
158
+ storeUpdateError = cli.Store.Contacts.PutContactName(ctx, jid, act.GetFirstName(), act.GetFullName())
159
159
  }
160
160
  case appstate.IndexClearChat:
161
161
  act := mutation.Action.GetClearChatAction()
@@ -209,7 +209,7 @@ func (cli *Client) dispatchAppState(mutation appstate.Mutation, fullSync bool, e
209
209
  FromFullSync: fullSync,
210
210
  }
211
211
  cli.Store.PushName = mutation.Action.GetPushNameSetting().GetName()
212
- err := cli.Store.Save()
212
+ err := cli.Store.Save(ctx)
213
213
  if err != nil {
214
214
  cli.Log.Errorf("Failed to save device store after updating push name: %v", err)
215
215
  }
@@ -270,11 +270,11 @@ func (cli *Client) dispatchAppState(mutation appstate.Mutation, fullSync bool, e
270
270
  }
271
271
  }
272
272
 
273
- func (cli *Client) downloadExternalAppStateBlob(ref *waServerSync.ExternalBlobReference) ([]byte, error) {
274
- return cli.Download(ref)
273
+ func (cli *Client) downloadExternalAppStateBlob(ctx context.Context, ref *waServerSync.ExternalBlobReference) ([]byte, error) {
274
+ return cli.Download(ctx, ref)
275
275
  }
276
276
 
277
- func (cli *Client) fetchAppStatePatches(name appstate.WAPatchName, fromVersion uint64, snapshot bool) (*appstate.PatchList, error) {
277
+ func (cli *Client) fetchAppStatePatches(ctx context.Context, name appstate.WAPatchName, fromVersion uint64, snapshot bool) (*appstate.PatchList, error) {
278
278
  attrs := waBinary.Attrs{
279
279
  "name": string(name),
280
280
  "return_snapshot": snapshot,
@@ -283,6 +283,7 @@ func (cli *Client) fetchAppStatePatches(name appstate.WAPatchName, fromVersion u
283
283
  attrs["version"] = fromVersion
284
284
  }
285
285
  resp, err := cli.sendIQ(infoQuery{
286
+ Context: ctx,
286
287
  Namespace: "w:sync:app:state",
287
288
  Type: "set",
288
289
  To: types.ServerJID,
@@ -297,12 +298,12 @@ func (cli *Client) fetchAppStatePatches(name appstate.WAPatchName, fromVersion u
297
298
  if err != nil {
298
299
  return nil, err
299
300
  }
300
- return appstate.ParsePatchList(resp, cli.downloadExternalAppStateBlob)
301
+ return appstate.ParsePatchList(ctx, resp, cli.downloadExternalAppStateBlob)
301
302
  }
302
303
 
303
304
  func (cli *Client) requestMissingAppStateKeys(ctx context.Context, patches *appstate.PatchList) {
304
305
  cli.appStateKeyRequestsLock.Lock()
305
- rawKeyIDs := cli.appStateProc.GetMissingKeyIDs(patches)
306
+ rawKeyIDs := cli.appStateProc.GetMissingKeyIDs(ctx, patches)
306
307
  filteredKeyIDs := make([][]byte, 0, len(rawKeyIDs))
307
308
  now := time.Now()
308
309
  for _, keyID := range rawKeyIDs {
@@ -348,17 +349,17 @@ func (cli *Client) requestAppStateKeys(ctx context.Context, rawKeyIDs [][]byte)
348
349
  //
349
350
  // You can use the Build methods in the appstate package to build the parameter for this method, e.g.
350
351
  //
351
- // cli.SendAppState(appstate.BuildMute(targetJID, true, 24 * time.Hour))
352
- func (cli *Client) SendAppState(patch appstate.PatchInfo) error {
352
+ // cli.SendAppState(ctx, appstate.BuildMute(targetJID, true, 24 * time.Hour))
353
+ func (cli *Client) SendAppState(ctx context.Context, patch appstate.PatchInfo) error {
353
354
  if cli == nil {
354
355
  return ErrClientIsNil
355
356
  }
356
- version, hash, err := cli.Store.AppState.GetAppStateVersion(string(patch.Type))
357
+ version, hash, err := cli.Store.AppState.GetAppStateVersion(ctx, string(patch.Type))
357
358
  if err != nil {
358
359
  return err
359
360
  }
360
361
  // TODO create new key instead of reusing the primary client's keys
361
- latestKeyID, err := cli.Store.AppStateKeys.GetLatestAppStateSyncKeyID()
362
+ latestKeyID, err := cli.Store.AppStateKeys.GetLatestAppStateSyncKeyID(ctx)
362
363
  if err != nil {
363
364
  return fmt.Errorf("failed to get latest app state key ID: %w", err)
364
365
  } else if latestKeyID == nil {
@@ -367,12 +368,13 @@ func (cli *Client) SendAppState(patch appstate.PatchInfo) error {
367
368
 
368
369
  state := appstate.HashState{Version: version, Hash: hash}
369
370
 
370
- encodedPatch, err := cli.appStateProc.EncodePatch(latestKeyID, state, patch)
371
+ encodedPatch, err := cli.appStateProc.EncodePatch(ctx, latestKeyID, state, patch)
371
372
  if err != nil {
372
373
  return err
373
374
  }
374
375
 
375
376
  resp, err := cli.sendIQ(infoQuery{
377
+ Context: ctx,
376
378
  Namespace: "w:sync:app:state",
377
379
  Type: iqSet,
378
380
  To: types.ServerJID,
@@ -403,5 +405,5 @@ func (cli *Client) SendAppState(patch appstate.PatchInfo) error {
403
405
  return fmt.Errorf("%w: %s", ErrAppStateUpdate, respCollection.XMLString())
404
406
  }
405
407
 
406
- return cli.FetchAppState(patch.Type, false, false)
408
+ return cli.FetchAppState(ctx, patch.Type, false, false)
407
409
  }
@@ -7,11 +7,14 @@
7
7
  package whatsmeow
8
8
 
9
9
  import (
10
+ "context"
10
11
  "fmt"
11
12
 
12
13
  "google.golang.org/protobuf/proto"
13
14
 
14
15
  armadillo "go.mau.fi/whatsmeow/proto"
16
+ "go.mau.fi/whatsmeow/proto/armadilloutil"
17
+ "go.mau.fi/whatsmeow/proto/instamadilloTransportPayload"
15
18
  "go.mau.fi/whatsmeow/proto/waCommon"
16
19
  "go.mau.fi/whatsmeow/proto/waMsgApplication"
17
20
  "go.mau.fi/whatsmeow/proto/waMsgTransport"
@@ -19,11 +22,11 @@ import (
19
22
  "go.mau.fi/whatsmeow/types/events"
20
23
  )
21
24
 
22
- func (cli *Client) handleDecryptedArmadillo(info *types.MessageInfo, decrypted []byte, retryCount int) bool {
25
+ func (cli *Client) handleDecryptedArmadillo(ctx context.Context, info *types.MessageInfo, decrypted []byte, retryCount int) (handled, handlerFailed bool) {
23
26
  dec, err := decodeArmadillo(decrypted)
24
27
  if err != nil {
25
28
  cli.Log.Warnf("Failed to decode armadillo message from %s: %v", info.SourceString(), err)
26
- return false
29
+ return
27
30
  }
28
31
  dec.Info = *info
29
32
  dec.RetryCount = retryCount
@@ -32,13 +35,14 @@ func (cli *Client) handleDecryptedArmadillo(info *types.MessageInfo, decrypted [
32
35
  cli.Log.Warnf("Got sender key distribution message in non-group chat from %s", info.Sender)
33
36
  } else {
34
37
  skdm := dec.Transport.GetProtocol().GetAncillary().GetSkdm()
35
- cli.handleSenderKeyDistributionMessage(info.Chat, info.Sender, skdm.AxolotlSenderKeyDistributionMessage)
38
+ cli.handleSenderKeyDistributionMessage(ctx, info.Chat, info.Sender, skdm.AxolotlSenderKeyDistributionMessage)
36
39
  }
37
40
  }
38
41
  if dec.Message != nil {
39
- cli.dispatchEvent(&dec)
42
+ handlerFailed = cli.dispatchEvent(&dec)
40
43
  }
41
- return true
44
+ handled = true
45
+ return
42
46
  }
43
47
 
44
48
  func decodeArmadillo(data []byte) (dec events.FBMessage, err error) {
@@ -51,11 +55,23 @@ func decodeArmadillo(data []byte) (dec events.FBMessage, err error) {
51
55
  if transport.GetPayload() == nil {
52
56
  return
53
57
  }
54
- application, err := transport.GetPayload().Decode()
58
+ appPayloadVer := transport.GetPayload().GetApplicationPayload().GetVersion()
59
+ switch appPayloadVer {
60
+ case waMsgTransport.FBMessageApplicationVersion:
61
+ return decodeFBArmadillo(&transport)
62
+ case waMsgTransport.IGMessageApplicationVersion:
63
+ return decodeIGArmadillo(&transport)
64
+ default:
65
+ return dec, fmt.Errorf("%w %d in MessageTransport", armadilloutil.ErrUnsupportedVersion, appPayloadVer)
66
+ }
67
+ }
68
+
69
+ func decodeFBArmadillo(transport *waMsgTransport.MessageTransport) (dec events.FBMessage, err error) {
70
+ application, err := transport.GetPayload().DecodeFB()
55
71
  if err != nil {
56
72
  return dec, fmt.Errorf("failed to unmarshal application: %w", err)
57
73
  }
58
- dec.Application = application
74
+ dec.FBApplication = application
59
75
  if application.GetPayload() == nil {
60
76
  return
61
77
  }
@@ -97,3 +113,20 @@ func decodeArmadillo(data []byte) (dec events.FBMessage, err error) {
97
113
  }
98
114
  return
99
115
  }
116
+
117
+ func decodeIGArmadillo(transport *waMsgTransport.MessageTransport) (dec events.FBMessage, err error) {
118
+ innerTransport, err := transport.GetPayload().DecodeIG()
119
+ if err != nil {
120
+ return dec, fmt.Errorf("failed to unmarshal IG transport: %w", err)
121
+ }
122
+ dec.IGTransport = innerTransport
123
+ switch typedContent := innerTransport.GetTransportPayload().(type) {
124
+ case *instamadilloTransportPayload.TransportPayload_Add:
125
+ dec.Message = typedContent.Add
126
+ case *instamadilloTransportPayload.TransportPayload_Supplement:
127
+ dec.Message = typedContent.Supplement
128
+ case *instamadilloTransportPayload.TransportPayload_Delete:
129
+ dec.Message = typedContent.Delete
130
+ }
131
+ return
132
+ }
@@ -159,7 +159,7 @@ func (w *binaryEncoder) writeStringRaw(value string) {
159
159
  }
160
160
 
161
161
  func (w *binaryEncoder) writeJID(jid types.JID) {
162
- if (jid.Server == types.DefaultUserServer && jid.Device > 0) || jid.Server == types.HiddenUserServer || jid.Server == types.HostedServer {
162
+ if ((jid.Server == types.DefaultUserServer || jid.Server == types.HiddenUserServer) && jid.Device > 0) || jid.Server == types.HostedServer {
163
163
  w.pushByte(token.ADJID)
164
164
  w.pushByte(jid.ActualAgent())
165
165
  w.pushByte(uint8(jid.Device))
@@ -7,6 +7,7 @@
7
7
  package whatsmeow
8
8
 
9
9
  import (
10
+ "context"
10
11
  "errors"
11
12
  "fmt"
12
13
 
@@ -14,11 +15,11 @@ import (
14
15
  "go.mau.fi/whatsmeow/types"
15
16
  )
16
17
 
17
- func (cli *Client) getBroadcastListParticipants(jid types.JID) ([]types.JID, error) {
18
+ func (cli *Client) getBroadcastListParticipants(ctx context.Context, jid types.JID) ([]types.JID, error) {
18
19
  var list []types.JID
19
20
  var err error
20
21
  if jid == types.StatusBroadcastJID {
21
- list, err = cli.getStatusBroadcastRecipients()
22
+ list, err = cli.getStatusBroadcastRecipients(ctx)
22
23
  } else {
23
24
  return nil, ErrBroadcastListUnsupported
24
25
  }
@@ -43,7 +44,7 @@ func (cli *Client) getBroadcastListParticipants(jid types.JID) ([]types.JID, err
43
44
  return list, nil
44
45
  }
45
46
 
46
- func (cli *Client) getStatusBroadcastRecipients() ([]types.JID, error) {
47
+ func (cli *Client) getStatusBroadcastRecipients(ctx context.Context) ([]types.JID, error) {
47
48
  statusPrivacyOptions, err := cli.GetStatusPrivacy()
48
49
  if err != nil {
49
50
  return nil, fmt.Errorf("failed to get status privacy: %w", err)
@@ -55,7 +56,7 @@ func (cli *Client) getStatusBroadcastRecipients() ([]types.JID, error) {
55
56
  }
56
57
 
57
58
  // Blacklist or all contacts mode. Find all contacts from database, then filter them appropriately.
58
- contacts, err := cli.Store.Contacts.GetAllContacts()
59
+ contacts, err := cli.Store.Contacts.GetAllContacts(ctx)
59
60
  if err != nil {
60
61
  return nil, fmt.Errorf("failed to get contact list from db: %w", err)
61
62
  }
@@ -13,7 +13,7 @@ import (
13
13
  )
14
14
 
15
15
  func (cli *Client) handleCallEvent(node *waBinary.Node) {
16
- defer cli.maybeDeferredAck(node)()
16
+ defer cli.maybeDeferredAck(cli.BackgroundEventCtx, node)()
17
17
 
18
18
  if len(node.GetChildren()) != 1 {
19
19
  cli.dispatchEvent(&events.UnknownCallEvent{Node: node})