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.
- slidge_whatsapp/config.py +3 -0
- slidge_whatsapp/event.go +31 -26
- slidge_whatsapp/gateway.go +13 -9
- slidge_whatsapp/gateway.py +2 -2
- slidge_whatsapp/generated/_whatsapp.cpython-313-aarch64-linux-gnu.h +135 -135
- slidge_whatsapp/generated/_whatsapp.cpython-313-aarch64-linux-gnu.so +0 -0
- slidge_whatsapp/generated/build.py +108 -108
- slidge_whatsapp/generated/whatsapp.c +954 -954
- slidge_whatsapp/generated/whatsapp.go +602 -602
- slidge_whatsapp/generated/whatsapp.py +783 -783
- slidge_whatsapp/generated/whatsapp_go.h +135 -135
- slidge_whatsapp/go.mod +15 -12
- slidge_whatsapp/go.sum +35 -29
- slidge_whatsapp/media/media.go +21 -11
- slidge_whatsapp/session.go +73 -66
- slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn.go +4 -4
- slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn_darwin.go +0 -5
- slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/go_libinit.go +3 -0
- slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/symbols.go +40 -20
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/CHANGELOG.md +14 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/ffi.go +2 -2
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/fun.go +10 -2
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib.go +1 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib_unix.go +1 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib_windows.go +1 -1
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/README.md +2 -7
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/callback.go +2 -1
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c +8510 -5090
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h +344 -150
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3.go +57 -23
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.c +4 -0
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go +4 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/.gitignore +4 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/LICENSE +202 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/README.md +4 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid.go +35 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_gccgo.go +26 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.3.c +23 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.3.go +22 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.4.go +35 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.4.s +18 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.5.go +28 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.5.s +44 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_slow.go +24 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_gccgo_go1.8.go +17 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.23.go +38 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.5.go +57 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.6.go +43 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.9.go +37 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/CONTRIBUTING.md +43 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/README.md +31 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/console.go +20 -5
- slidge_whatsapp/vendor/github.com/rs/zerolog/log/log.go +131 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/log.go +1 -1
- slidge_whatsapp/vendor/github.com/rs/zerolog/sampler.go +4 -1
- slidge_whatsapp/vendor/github.com/rs/zerolog/writer.go +9 -0
- slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/GroupCipher.go +17 -6
- slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/GroupSessionBuilder.go +17 -7
- slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/state/store/SenderKeyStore.go +4 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/chain/ChainKey.go +1 -0
- slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/identity/IdentityKey.go +1 -0
- slidge_whatsapp/vendor/go.mau.fi/libsignal/logger/DefaultLogger.go +2 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/FingerprintProtocol.pb.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/LocalStorageProtocol.pb.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/WhisperTextProtocol.pb.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/session/Session.go +41 -17
- slidge_whatsapp/vendor/go.mau.fi/libsignal/session/SessionCipher.go +64 -30
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/IdentityKeyStore.go +5 -3
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/MessageKeyStore.go +6 -4
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/PreKeyStore.go +6 -4
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/SessionStore.go +8 -6
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/SignedPreKeyStore.go +7 -5
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/connlog.go +257 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/database.go +309 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/iter.go +233 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/json.go +47 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/log.go +129 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/massinsert.go +164 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/queryhelper.go +137 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/reflectscan.go +30 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/transaction.go +180 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/upgrades.go +250 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/upgradetable.go +331 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exerrors/dualerror.go +33 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exerrors/must.go +23 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/cors.go +32 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/handleerrors.go +64 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/json.go +36 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/middleware.go +30 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/networkerror.go +37 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exstrings/stringutil.go +76 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/event.go +88 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/returnonce.go +25 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/ringbuffer.go +139 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/syncmap.go +94 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/syncset.go +136 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/callermarshal.go +28 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/defaults.go +32 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/generics.go +45 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/writer.go +81 -0
- slidge_whatsapp/vendor/go.mau.fi/util/ptr/ptr.go +43 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/decode.go +27 -26
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/encode.go +4 -3
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/keys.go +5 -4
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate.go +27 -25
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/armadillomessage.go +40 -7
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/binary/encoder.go +1 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/broadcast.go +5 -4
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/call.go +1 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/client.go +119 -37
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/connectionevents.go +29 -11
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download-to-file.go +63 -30
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download.go +74 -34
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/errors.go +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/group.go +61 -31
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/internals.go +188 -152
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/keepalive.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/mediaconn.go +5 -3
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/mediaretry.go +2 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/message.go +444 -135
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/msgsecret.go +118 -31
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/notification.go +78 -42
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/pair-code.go +7 -4
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/pair.go +42 -18
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/prekeys.go +9 -5
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/presence.go +2 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/privacysettings.go +10 -11
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/extra.go +7 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/InstamadilloAddMessage.pb.go +983 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/InstamadilloAddMessage.proto +85 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/extra.go +3 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeActionLog/InstamadilloCoreTypeActionLog.pb.go +197 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeActionLog/InstamadilloCoreTypeActionLog.proto +13 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeAdminMessage/InstamadilloCoreTypeAdminMessage.pb.go +279 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeAdminMessage/InstamadilloCoreTypeAdminMessage.proto +21 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeCollection/InstamadilloCoreTypeCollection.pb.go +137 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeCollection/InstamadilloCoreTypeCollection.proto +10 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeLink/InstamadilloCoreTypeLink.pb.go +313 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeLink/InstamadilloCoreTypeLink.proto +27 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeMedia/InstamadilloCoreTypeMedia.pb.go +1299 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeMedia/InstamadilloCoreTypeMedia.proto +112 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeText/InstamadilloCoreTypeText.pb.go +514 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeText/InstamadilloCoreTypeText.proto +47 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/InstamadilloDeleteMessage.pb.go +123 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/InstamadilloDeleteMessage.proto +7 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/extra.go +3 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/InstamadilloSupplementMessage.pb.go +720 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/InstamadilloSupplementMessage.proto +59 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/extra.go +3 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloTransportPayload/InstamadilloTransportPayload.pb.go +365 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloTransportPayload/InstamadilloTransportPayload.proto +33 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloXmaContentRef/InstamadilloXmaContentRef.pb.go +1238 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloXmaContentRef/InstamadilloXmaContentRef.proto +105 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waAdv/WAAdv.pb.go +39 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.pb.go +354 -175
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.proto +5 -5
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.pb.go +170 -15
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.proto +4 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCert/WACert.pb.go +29 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.go +13 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.pb.go +344 -31
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.proto +26 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/{WAWebProtobufsCompanionReg.pb.go → WACompanionReg.pb.go} +184 -89
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/{WAWebProtobufsCompanionReg.proto → WACompanionReg.proto} +2 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waConsumerApplication/WAConsumerApplication.pb.go +173 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.go +78 -16
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.proto +5 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.pb.go +7428 -2151
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.proto +373 -44
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.pb.go +456 -135
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.proto +14 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.pb.go +198 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.proto +14 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.pb.go +162 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.proto +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.pb.go +32 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.proto +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.pb.go +192 -52
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.proto +8 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/WAMsgTransport.pb.go +60 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/extra.go +7 -6
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMultiDevice/WAMultiDevice.pb.go +39 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waServerSync/WAServerSync.pb.go +61 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waStatusAttributions/WAStatusAttributions.pb.go +800 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waStatusAttributions/WAStatusAttributions.proto +72 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.pb.go +1344 -438
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.proto +52 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waUserPassword/WAProtobufsUserPassword.pb.go +27 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waVnameCert/WAWebProtobufsVnameCert.pb.go +59 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.pb.go +382 -78
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.proto +8 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.pb.go +563 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.proto +4 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/receipt.go +25 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/reportingfields.json +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/reportingtoken.go +176 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/retry.go +39 -21
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/send.go +261 -75
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/sendfb.go +28 -16
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/clientpayload.go +3 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/noop.go +85 -43
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/signal.go +75 -88
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/container.go +86 -65
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/lidmap.go +186 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/store.go +291 -167
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/00-latest-schema.sql +155 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/03-message-secrets.sql +11 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/04-privacy-tokens.sql +8 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/05-account-jid-format.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/06-facebook-uuid.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/07-account-lid.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/08-lid-mapping.sql +5 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/09-decryption-buffer.sql +10 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/10-chat-db-lid-migration-ts.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/upgrades.go +22 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/store.go +107 -56
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/botmap.go +210 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/events/events.go +13 -2
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/group.go +15 -6
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/jid.go +7 -8
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/message.go +18 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/update.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/upload.go +1 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/user.go +47 -29
- slidge_whatsapp/vendor/golang.org/x/exp/LICENSE +27 -0
- slidge_whatsapp/vendor/golang.org/x/exp/PATENTS +22 -0
- slidge_whatsapp/vendor/golang.org/x/exp/constraints/constraints.go +54 -0
- slidge_whatsapp/vendor/golang.org/x/net/http/httpguts/guts.go +50 -0
- slidge_whatsapp/vendor/golang.org/x/net/http/httpguts/httplex.go +347 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/.gitignore +2 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/ascii.go +53 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/ciphers.go +641 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/client_conn_pool.go +311 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/config.go +122 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/config_go124.go +61 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/config_pre_go124.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/databuffer.go +149 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/errors.go +145 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/flow.go +120 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/frame.go +1702 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/gotrack.go +170 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/encode.go +245 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/hpack.go +523 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/huffman.go +226 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/static_table.go +188 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/tables.go +403 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/http2.go +432 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/pipe.go +184 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/server.go +3350 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/timer.go +20 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/transport.go +3287 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/unencrypted.go +32 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/write.go +381 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched.go +251 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_priority.go +451 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_random.go +77 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_roundrobin.go +119 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/go118.go +13 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/idna10.0.0.go +769 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/idna9.0.0.go +717 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/pre_go118.go +11 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/punycode.go +217 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables10.0.0.go +4559 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables11.0.0.go +4653 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables12.0.0.go +4733 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables13.0.0.go +4959 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables15.0.0.go +5144 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables9.0.0.go +4486 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trie.go +51 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trie12.0.0.go +30 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trie13.0.0.go +30 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trieval.go +119 -0
- slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/ascii.go +53 -0
- slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/headermap.go +115 -0
- slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/request.go +467 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_darwin.go +148 -1
- slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux.go +16 -26
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +84 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +20 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +84 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +20 -0
- slidge_whatsapp/vendor/golang.org/x/sys/windows/security_windows.go +44 -5
- slidge_whatsapp/vendor/golang.org/x/sys/windows/syscall_windows.go +4 -2
- slidge_whatsapp/vendor/golang.org/x/sys/windows/types_windows.go +239 -0
- slidge_whatsapp/vendor/golang.org/x/sys/windows/zsyscall_windows.go +9 -0
- slidge_whatsapp/vendor/golang.org/x/text/LICENSE +27 -0
- slidge_whatsapp/vendor/golang.org/x/text/PATENTS +22 -0
- slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule.go +336 -0
- slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go +11 -0
- slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go +14 -0
- slidge_whatsapp/vendor/golang.org/x/text/transform/transform.go +709 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/bidi.go +359 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/bracket.go +335 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/core.go +1071 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/prop.go +206 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go +1815 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go +1887 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go +1923 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go +1955 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go +2042 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go +1781 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/trieval.go +48 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/composition.go +512 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/forminfo.go +279 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/input.go +109 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/iter.go +458 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/normalize.go +610 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/readwriter.go +125 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go +7657 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go +7693 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go +7710 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go +7760 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go +7907 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go +7637 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/transform.go +88 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/trie.go +54 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb +0 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/filedesc/editions.go +3 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +16 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/strs/{strings_unsafe_go121.go → strings_unsafe.go} +0 -2
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/version/version.go +1 -1
- slidge_whatsapp/vendor/google.golang.org/protobuf/proto/merge.go +6 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +2 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/{value_unsafe_go121.go → value_unsafe.go} +0 -2
- slidge_whatsapp/vendor/modules.txt +52 -13
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/METADATA +1 -1
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/RECORD +330 -184
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/WHEEL +1 -1
- slidge_whatsapp/vendor/github.com/rs/zerolog/CNAME +0 -1
- slidge_whatsapp/vendor/github.com/rs/zerolog/_config.yml +0 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waAdv/WAAdv.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCert/WACert.pb.raw +0 -23
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.raw +0 -7
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/WAWebProtobufsCompanionReg.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waConsumerApplication/WAConsumerApplication.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/WAMsgTransport.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMultiDevice/WAMultiDevice.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waServerSync/WAServerSync.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waUserPassword/WAProtobufsUserPassword.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waVnameCert/WAWebProtobufsVnameCert.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrade.go +0 -296
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go +0 -94
- slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go +0 -98
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/LICENSE +0 -0
- {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.
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
|
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})
|