slidge-whatsapp 0.2.5__cp311-cp311-manylinux_2_36_aarch64.whl → 0.3.0__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.
- slidge_whatsapp/config.py +3 -0
- slidge_whatsapp/contact.py +15 -3
- slidge_whatsapp/event.go +171 -70
- slidge_whatsapp/gateway.go +16 -68
- slidge_whatsapp/gateway.py +4 -5
- slidge_whatsapp/generated/_whatsapp.cpython-311-aarch64-linux-gnu.h +168 -151
- slidge_whatsapp/generated/_whatsapp.cpython-311-aarch64-linux-gnu.so +0 -0
- slidge_whatsapp/generated/build.py +142 -128
- slidge_whatsapp/generated/whatsapp.c +1689 -1417
- slidge_whatsapp/generated/whatsapp.go +1011 -900
- slidge_whatsapp/generated/whatsapp.py +1175 -1050
- slidge_whatsapp/generated/whatsapp_go.h +168 -151
- slidge_whatsapp/go.mod +21 -15
- slidge_whatsapp/go.sum +49 -31
- slidge_whatsapp/group.py +34 -30
- slidge_whatsapp/media/media.go +22 -12
- slidge_whatsapp/session.go +106 -82
- slidge_whatsapp/session.py +46 -14
- slidge_whatsapp/vendor/github.com/beeper/argo-go/LICENSE +9 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/block/blockreader.go +329 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/block/blockwriter.go +417 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/codec/decoder.go +652 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/codec/encoder.go +985 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/header/header.go +135 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/internal/util/util.go +133 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/label/label.go +384 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/label/wiremarkers.go +37 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/pkg/bitset/bitset.go +197 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/pkg/buf/buf.go +420 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/pkg/varint/varint.go +246 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/wire/wire.go +614 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/wirecodec/decode.go +341 -0
- 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/elliotchance/orderedmap/v3/LICENSE +21 -0
- slidge_whatsapp/vendor/github.com/elliotchance/orderedmap/v3/list.go +95 -0
- slidge_whatsapp/vendor/github.com/elliotchance/orderedmap/v3/orderedmap.go +187 -0
- slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/fitz.go +1 -0
- slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/fitz_cgo.go +3 -0
- slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/fitz_nocgo.go +4 -5
- slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/purego_darwin.go +11 -1
- slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/purego_linux.go +10 -0
- slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/purego_windows.go +12 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/.gitignore +0 -2
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/CHANGELOG.md +44 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/COPYRIGHT.txt +6 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/README.md +14 -17
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/abi.go +1 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/abi2.go +7 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/assets/libffi/LICENSE +21 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/assets/libffi/darwin_amd64/libffi.8.dylib +0 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/assets/libffi/darwin_arm64/libffi.8.dylib +0 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/assets/libffi/windows_amd64/libffi-8.dll +0 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/cif.go +15 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/cif_arm64.go +16 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/embed.go +49 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/embed_darwin_amd64.go +10 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/embed_darwin_arm64.go +10 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/embed_windows_amd64.go +10 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/ffi.go +53 -15
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/fun.go +10 -2
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/init.go +22 -9
- 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 +4 -7
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/callback.go +2 -1
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c +11545 -6680
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h +527 -273
- 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/mattn/go-sqlite3/sqlite3_opt_userauth.go +13 -140
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3ext.h +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.25.go +37 -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/github.com/vektah/gqlparser/v2/LICENSE +19 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/argmap.go +37 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/collections.go +148 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/comment.go +31 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/decode.go +216 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/definition.go +110 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/directive.go +43 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/document.go +89 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/dumper.go +159 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/fragment.go +41 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/operation.go +32 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/path.go +72 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/selection.go +41 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/source.go +19 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/type.go +68 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/value.go +122 -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 +98 -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 +38 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exstrings/stringutil.go +104 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/event.go +104 -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/.pre-commit-config.yaml +3 -3
- 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/hash.go +1 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/keys.go +5 -4
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate.go +32 -26
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/argo/argo-wire-type-store.argo +63 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/argo/argo.go +62 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/argo/name-to-queryids.json +306 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/armadillomessage.go +42 -8
- 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 +2 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/client.go +134 -55
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/connectionevents.go +34 -11
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download-to-file.go +63 -30
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download.go +78 -34
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/errors.go +4 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/group.go +157 -55
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/internals.go +202 -154
- 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 +448 -138
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/msgsecret.go +106 -31
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/newsletter.go +83 -7
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/notification.go +83 -43
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/pair-code.go +9 -6
- 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 +17 -7
- 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/waBotMetadata/WABotMetadata.pb.go +5156 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waBotMetadata/WABotMetadata.proto +516 -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} +211 -89
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/{WAWebProtobufsCompanionReg.proto → WACompanionReg.proto} +5 -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 +7463 -5180
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.proto +366 -343
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.pb.go +485 -135
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.proto +17 -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 +952 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waStatusAttributions/WAStatusAttributions.proto +88 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.pb.go +1802 -453
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.proto +92 -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 +435 -109
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.proto +11 -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 +32 -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 +267 -79
- 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 +87 -44
- 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 +314 -170
- 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 +109 -56
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/botmap.go +210 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/call.go +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/events/events.go +21 -2
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/group.go +15 -6
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/jid.go +9 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/message.go +18 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/user.go +2 -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 +59 -37
- slidge_whatsapp/vendor/golang.org/x/crypto/curve25519/curve25519.go +1 -1
- 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 +164 -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 +181 -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 +410 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/pipe.go +184 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/server.go +3332 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/transport.go +3233 -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/affinity_linux.go +1 -3
- slidge_whatsapp/vendor/golang.org/x/sys/unix/mkerrors.sh +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_darwin.go +93 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux.go +16 -26
- slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_solaris.go +1 -1
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux.go +47 -16
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +3 -0
- 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/unix/zsyscall_solaris_amd64.go +4 -4
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux.go +168 -12
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +17 -1
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +18 -2
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +17 -1
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +17 -1
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +18 -2
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +16 -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 +245 -0
- slidge_whatsapp/vendor/golang.org/x/sys/windows/zsyscall_windows.go +491 -482
- 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/encoding/protowire/wire.go +25 -1
- 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 +13 -5
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/filedesc/presence.go +33 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/api_gen.go +6 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +81 -19
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/codec_message_opaque.go +2 -1
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/message_opaque.go +8 -37
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/presence.go +0 -3
- 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 +10 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/{value_unsafe_go121.go → value_unsafe.go} +0 -2
- slidge_whatsapp/vendor/modules.txt +80 -21
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.3.0.dist-info}/METADATA +5 -4
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.3.0.dist-info}/RECORD +456 -263
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.3.0.dist-info}/WHEEL +1 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/abi_amd64.go +0 -7
- 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.3.0.dist-info}/entry_points.txt +0 -0
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.3.0.dist-info/licenses}/LICENSE +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c)
|
|
1
|
+
// Copyright (c) 2025 Tulir Asokan
|
|
2
2
|
//
|
|
3
3
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
4
4
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
@@ -8,14 +8,19 @@
|
|
|
8
8
|
package sqlstore
|
|
9
9
|
|
|
10
10
|
import (
|
|
11
|
+
"context"
|
|
11
12
|
"database/sql"
|
|
12
13
|
"database/sql/driver"
|
|
13
14
|
"errors"
|
|
14
15
|
"fmt"
|
|
16
|
+
"slices"
|
|
15
17
|
"strings"
|
|
16
18
|
"sync"
|
|
17
19
|
"time"
|
|
18
20
|
|
|
21
|
+
"go.mau.fi/util/dbutil"
|
|
22
|
+
"go.mau.fi/util/exsync"
|
|
23
|
+
|
|
19
24
|
"go.mau.fi/whatsmeow/store"
|
|
20
25
|
"go.mau.fi/whatsmeow/types"
|
|
21
26
|
"go.mau.fi/whatsmeow/util/keys"
|
|
@@ -30,7 +35,7 @@ var ErrInvalidLength = errors.New("database returned byte array with illegal len
|
|
|
30
35
|
// When using github.com/lib/pq, you should set
|
|
31
36
|
//
|
|
32
37
|
// whatsmeow.PostgresArrayWrapper = pq.Array
|
|
33
|
-
var PostgresArrayWrapper func(
|
|
38
|
+
var PostgresArrayWrapper func(any) interface {
|
|
34
39
|
driver.Valuer
|
|
35
40
|
sql.Scanner
|
|
36
41
|
}
|
|
@@ -43,6 +48,8 @@ type SQLStore struct {
|
|
|
43
48
|
|
|
44
49
|
contactCache map[types.JID]*types.ContactInfo
|
|
45
50
|
contactCacheLock sync.Mutex
|
|
51
|
+
|
|
52
|
+
migratedPNSessionsCache *exsync.Set[string]
|
|
46
53
|
}
|
|
47
54
|
|
|
48
55
|
// NewSQLStore creates a new SQLStore with the given database container and user JID.
|
|
@@ -54,10 +61,12 @@ func NewSQLStore(c *Container, jid types.JID) *SQLStore {
|
|
|
54
61
|
Container: c,
|
|
55
62
|
JID: jid.String(),
|
|
56
63
|
contactCache: make(map[types.JID]*types.ContactInfo),
|
|
64
|
+
|
|
65
|
+
migratedPNSessionsCache: exsync.NewSet[string](),
|
|
57
66
|
}
|
|
58
67
|
}
|
|
59
68
|
|
|
60
|
-
var _ store.
|
|
69
|
+
var _ store.AllSessionSpecificStores = (*SQLStore)(nil)
|
|
61
70
|
|
|
62
71
|
const (
|
|
63
72
|
putIdentityQuery = `
|
|
@@ -69,24 +78,24 @@ const (
|
|
|
69
78
|
getIdentityQuery = `SELECT identity FROM whatsmeow_identity_keys WHERE our_jid=$1 AND their_id=$2`
|
|
70
79
|
)
|
|
71
80
|
|
|
72
|
-
func (s *SQLStore) PutIdentity(address string, key [32]byte) error {
|
|
73
|
-
_, err := s.db.Exec(putIdentityQuery, s.JID, address, key[:])
|
|
81
|
+
func (s *SQLStore) PutIdentity(ctx context.Context, address string, key [32]byte) error {
|
|
82
|
+
_, err := s.db.Exec(ctx, putIdentityQuery, s.JID, address, key[:])
|
|
74
83
|
return err
|
|
75
84
|
}
|
|
76
85
|
|
|
77
|
-
func (s *SQLStore) DeleteAllIdentities(phone string) error {
|
|
78
|
-
_, err := s.db.Exec(deleteAllIdentitiesQuery, s.JID, phone+":%")
|
|
86
|
+
func (s *SQLStore) DeleteAllIdentities(ctx context.Context, phone string) error {
|
|
87
|
+
_, err := s.db.Exec(ctx, deleteAllIdentitiesQuery, s.JID, phone+":%")
|
|
79
88
|
return err
|
|
80
89
|
}
|
|
81
90
|
|
|
82
|
-
func (s *SQLStore) DeleteIdentity(address string) error {
|
|
83
|
-
_, err := s.db.Exec(deleteAllIdentitiesQuery, s.JID, address)
|
|
91
|
+
func (s *SQLStore) DeleteIdentity(ctx context.Context, address string) error {
|
|
92
|
+
_, err := s.db.Exec(ctx, deleteAllIdentitiesQuery, s.JID, address)
|
|
84
93
|
return err
|
|
85
94
|
}
|
|
86
95
|
|
|
87
|
-
func (s *SQLStore) IsTrustedIdentity(address string, key [32]byte) (bool, error) {
|
|
96
|
+
func (s *SQLStore) IsTrustedIdentity(ctx context.Context, address string, key [32]byte) (bool, error) {
|
|
88
97
|
var existingIdentity []byte
|
|
89
|
-
err := s.db.QueryRow(getIdentityQuery, s.JID, address).Scan(&existingIdentity)
|
|
98
|
+
err := s.db.QueryRow(ctx, getIdentityQuery, s.JID, address).Scan(&existingIdentity)
|
|
90
99
|
if errors.Is(err, sql.ErrNoRows) {
|
|
91
100
|
// Trust if not known, it'll be saved automatically later
|
|
92
101
|
return true, nil
|
|
@@ -107,39 +116,136 @@ const (
|
|
|
107
116
|
`
|
|
108
117
|
deleteAllSessionsQuery = `DELETE FROM whatsmeow_sessions WHERE our_jid=$1 AND their_id LIKE $2`
|
|
109
118
|
deleteSessionQuery = `DELETE FROM whatsmeow_sessions WHERE our_jid=$1 AND their_id=$2`
|
|
119
|
+
|
|
120
|
+
migratePNToLIDSessionsQuery = `
|
|
121
|
+
INSERT INTO whatsmeow_sessions (our_jid, their_id, session)
|
|
122
|
+
SELECT our_jid, replace(their_id, $2, $3), session
|
|
123
|
+
FROM whatsmeow_sessions
|
|
124
|
+
WHERE our_jid=$1 AND their_id LIKE $2 || ':%'
|
|
125
|
+
ON CONFLICT (our_jid, their_id) DO UPDATE SET session=excluded.session
|
|
126
|
+
`
|
|
127
|
+
deleteAllIdentityKeysQuery = `DELETE FROM whatsmeow_identity_keys WHERE our_jid=$1 AND their_id LIKE $2`
|
|
128
|
+
migratePNToLIDIdentityKeysQuery = `
|
|
129
|
+
INSERT INTO whatsmeow_identity_keys (our_jid, their_id, identity)
|
|
130
|
+
SELECT our_jid, replace(their_id, $2, $3), identity
|
|
131
|
+
FROM whatsmeow_identity_keys
|
|
132
|
+
WHERE our_jid=$1 AND their_id LIKE $2 || ':%'
|
|
133
|
+
ON CONFLICT (our_jid, their_id) DO UPDATE SET identity=excluded.identity
|
|
134
|
+
`
|
|
135
|
+
deleteAllSenderKeysQuery = `DELETE FROM whatsmeow_sender_keys WHERE our_jid=$1 AND sender_id LIKE $2`
|
|
136
|
+
migratePNToLIDSenderKeysQuery = `
|
|
137
|
+
INSERT INTO whatsmeow_sender_keys (our_jid, chat_id, sender_id, sender_key)
|
|
138
|
+
SELECT our_jid, chat_id, replace(sender_id, $2, $3), sender_key
|
|
139
|
+
FROM whatsmeow_sender_keys
|
|
140
|
+
WHERE our_jid=$1 AND sender_id LIKE $2 || ':%'
|
|
141
|
+
ON CONFLICT (our_jid, chat_id, sender_id) DO UPDATE SET sender_key=excluded.sender_key
|
|
142
|
+
`
|
|
110
143
|
)
|
|
111
144
|
|
|
112
|
-
func (s *SQLStore) GetSession(address string) (session []byte, err error) {
|
|
113
|
-
err = s.db.QueryRow(getSessionQuery, s.JID, address).Scan(&session)
|
|
145
|
+
func (s *SQLStore) GetSession(ctx context.Context, address string) (session []byte, err error) {
|
|
146
|
+
err = s.db.QueryRow(ctx, getSessionQuery, s.JID, address).Scan(&session)
|
|
114
147
|
if errors.Is(err, sql.ErrNoRows) {
|
|
115
148
|
err = nil
|
|
116
149
|
}
|
|
117
150
|
return
|
|
118
151
|
}
|
|
119
152
|
|
|
120
|
-
func (s *SQLStore) HasSession(address string) (has bool, err error) {
|
|
121
|
-
err = s.db.QueryRow(hasSessionQuery, s.JID, address).Scan(&has)
|
|
153
|
+
func (s *SQLStore) HasSession(ctx context.Context, address string) (has bool, err error) {
|
|
154
|
+
err = s.db.QueryRow(ctx, hasSessionQuery, s.JID, address).Scan(&has)
|
|
122
155
|
if errors.Is(err, sql.ErrNoRows) {
|
|
123
156
|
err = nil
|
|
124
157
|
}
|
|
125
158
|
return
|
|
126
159
|
}
|
|
127
160
|
|
|
128
|
-
func (s *SQLStore) PutSession(address string, session []byte) error {
|
|
129
|
-
_, err := s.db.Exec(putSessionQuery, s.JID, address, session)
|
|
161
|
+
func (s *SQLStore) PutSession(ctx context.Context, address string, session []byte) error {
|
|
162
|
+
_, err := s.db.Exec(ctx, putSessionQuery, s.JID, address, session)
|
|
163
|
+
return err
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
func (s *SQLStore) DeleteAllSessions(ctx context.Context, phone string) error {
|
|
167
|
+
return s.deleteAllSessions(ctx, phone)
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
func (s *SQLStore) deleteAllSessions(ctx context.Context, phone string) error {
|
|
171
|
+
_, err := s.db.Exec(ctx, deleteAllSessionsQuery, s.JID, phone+":%")
|
|
172
|
+
return err
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
func (s *SQLStore) deleteAllSenderKeys(ctx context.Context, phone string) error {
|
|
176
|
+
_, err := s.db.Exec(ctx, deleteAllSenderKeysQuery, s.JID, phone+":%")
|
|
130
177
|
return err
|
|
131
178
|
}
|
|
132
179
|
|
|
133
|
-
func (s *SQLStore)
|
|
134
|
-
_, err := s.db.Exec(
|
|
180
|
+
func (s *SQLStore) deleteAllIdentityKeys(ctx context.Context, phone string) error {
|
|
181
|
+
_, err := s.db.Exec(ctx, deleteAllIdentityKeysQuery, s.JID, phone+":%")
|
|
135
182
|
return err
|
|
136
183
|
}
|
|
137
184
|
|
|
138
|
-
func (s *SQLStore) DeleteSession(address string) error {
|
|
139
|
-
_, err := s.db.Exec(deleteSessionQuery, s.JID, address)
|
|
185
|
+
func (s *SQLStore) DeleteSession(ctx context.Context, address string) error {
|
|
186
|
+
_, err := s.db.Exec(ctx, deleteSessionQuery, s.JID, address)
|
|
140
187
|
return err
|
|
141
188
|
}
|
|
142
189
|
|
|
190
|
+
func (s *SQLStore) MigratePNToLID(ctx context.Context, pn, lid types.JID) error {
|
|
191
|
+
pnSignal := pn.SignalAddressUser()
|
|
192
|
+
if !s.migratedPNSessionsCache.Add(pnSignal) {
|
|
193
|
+
return nil
|
|
194
|
+
}
|
|
195
|
+
var sessionsUpdated, identityKeysUpdated, senderKeysUpdated int64
|
|
196
|
+
lidSignal := lid.SignalAddressUser()
|
|
197
|
+
err := s.db.DoTxn(ctx, nil, func(ctx context.Context) error {
|
|
198
|
+
res, err := s.db.Exec(ctx, migratePNToLIDSessionsQuery, s.JID, pnSignal, lidSignal)
|
|
199
|
+
if err != nil {
|
|
200
|
+
return fmt.Errorf("failed to migrate sessions: %w", err)
|
|
201
|
+
}
|
|
202
|
+
sessionsUpdated, err = res.RowsAffected()
|
|
203
|
+
if err != nil {
|
|
204
|
+
return fmt.Errorf("failed to get rows affected for sessions: %w", err)
|
|
205
|
+
}
|
|
206
|
+
err = s.deleteAllSessions(ctx, pnSignal)
|
|
207
|
+
if err != nil {
|
|
208
|
+
return fmt.Errorf("failed to delete extra sessions: %w", err)
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
res, err = s.db.Exec(ctx, migratePNToLIDIdentityKeysQuery, s.JID, pnSignal, lidSignal)
|
|
212
|
+
if err != nil {
|
|
213
|
+
return fmt.Errorf("failed to migrate identity keys: %w", err)
|
|
214
|
+
}
|
|
215
|
+
identityKeysUpdated, err = res.RowsAffected()
|
|
216
|
+
if err != nil {
|
|
217
|
+
return fmt.Errorf("failed to get rows affected for identity keys: %w", err)
|
|
218
|
+
}
|
|
219
|
+
err = s.deleteAllIdentityKeys(ctx, pnSignal)
|
|
220
|
+
if err != nil {
|
|
221
|
+
return fmt.Errorf("failed to delete extra identity keys: %w", err)
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
res, err = s.db.Exec(ctx, migratePNToLIDSenderKeysQuery, s.JID, pnSignal, lidSignal)
|
|
225
|
+
if err != nil {
|
|
226
|
+
return fmt.Errorf("failed to migrate sender keys: %w", err)
|
|
227
|
+
}
|
|
228
|
+
senderKeysUpdated, err = res.RowsAffected()
|
|
229
|
+
if err != nil {
|
|
230
|
+
return fmt.Errorf("failed to get rows affected for sender keys: %w", err)
|
|
231
|
+
}
|
|
232
|
+
err = s.deleteAllSenderKeys(ctx, pnSignal)
|
|
233
|
+
if err != nil {
|
|
234
|
+
return fmt.Errorf("failed to delete extra sender keys: %w", err)
|
|
235
|
+
}
|
|
236
|
+
return nil
|
|
237
|
+
})
|
|
238
|
+
if err != nil {
|
|
239
|
+
return err
|
|
240
|
+
}
|
|
241
|
+
if sessionsUpdated > 0 || senderKeysUpdated > 0 || identityKeysUpdated > 0 {
|
|
242
|
+
s.log.Infof("Migrated %d sessions, %d identity keys and %d sender keys from %s to %s", sessionsUpdated, identityKeysUpdated, senderKeysUpdated, pnSignal, lidSignal)
|
|
243
|
+
} else {
|
|
244
|
+
s.log.Debugf("No sessions or sender keys found to migrate from %s to %s", pnSignal, lidSignal)
|
|
245
|
+
}
|
|
246
|
+
return nil
|
|
247
|
+
}
|
|
248
|
+
|
|
143
249
|
const (
|
|
144
250
|
getLastPreKeyIDQuery = `SELECT MAX(key_id) FROM whatsmeow_pre_keys WHERE jid=$1`
|
|
145
251
|
insertPreKeyQuery = `INSERT INTO whatsmeow_pre_keys (jid, key_id, key, uploaded) VALUES ($1, $2, $3, $4)`
|
|
@@ -150,36 +256,36 @@ const (
|
|
|
150
256
|
getUploadedPreKeyCountQuery = `SELECT COUNT(*) FROM whatsmeow_pre_keys WHERE jid=$1 AND uploaded=true`
|
|
151
257
|
)
|
|
152
258
|
|
|
153
|
-
func (s *SQLStore) genOnePreKey(id uint32, markUploaded bool) (*keys.PreKey, error) {
|
|
259
|
+
func (s *SQLStore) genOnePreKey(ctx context.Context, id uint32, markUploaded bool) (*keys.PreKey, error) {
|
|
154
260
|
key := keys.NewPreKey(id)
|
|
155
|
-
_, err := s.db.Exec(insertPreKeyQuery, s.JID, key.KeyID, key.Priv[:], markUploaded)
|
|
261
|
+
_, err := s.db.Exec(ctx, insertPreKeyQuery, s.JID, key.KeyID, key.Priv[:], markUploaded)
|
|
156
262
|
return key, err
|
|
157
263
|
}
|
|
158
264
|
|
|
159
|
-
func (s *SQLStore) getNextPreKeyID() (uint32, error) {
|
|
265
|
+
func (s *SQLStore) getNextPreKeyID(ctx context.Context) (uint32, error) {
|
|
160
266
|
var lastKeyID sql.NullInt32
|
|
161
|
-
err := s.db.QueryRow(getLastPreKeyIDQuery, s.JID).Scan(&lastKeyID)
|
|
267
|
+
err := s.db.QueryRow(ctx, getLastPreKeyIDQuery, s.JID).Scan(&lastKeyID)
|
|
162
268
|
if err != nil {
|
|
163
269
|
return 0, fmt.Errorf("failed to query next prekey ID: %w", err)
|
|
164
270
|
}
|
|
165
271
|
return uint32(lastKeyID.Int32) + 1, nil
|
|
166
272
|
}
|
|
167
273
|
|
|
168
|
-
func (s *SQLStore) GenOnePreKey() (*keys.PreKey, error) {
|
|
274
|
+
func (s *SQLStore) GenOnePreKey(ctx context.Context) (*keys.PreKey, error) {
|
|
169
275
|
s.preKeyLock.Lock()
|
|
170
276
|
defer s.preKeyLock.Unlock()
|
|
171
|
-
nextKeyID, err := s.getNextPreKeyID()
|
|
277
|
+
nextKeyID, err := s.getNextPreKeyID(ctx)
|
|
172
278
|
if err != nil {
|
|
173
279
|
return nil, err
|
|
174
280
|
}
|
|
175
|
-
return s.genOnePreKey(nextKeyID, true)
|
|
281
|
+
return s.genOnePreKey(ctx, nextKeyID, true)
|
|
176
282
|
}
|
|
177
283
|
|
|
178
|
-
func (s *SQLStore) GetOrGenPreKeys(count uint32) ([]*keys.PreKey, error) {
|
|
284
|
+
func (s *SQLStore) GetOrGenPreKeys(ctx context.Context, count uint32) ([]*keys.PreKey, error) {
|
|
179
285
|
s.preKeyLock.Lock()
|
|
180
286
|
defer s.preKeyLock.Unlock()
|
|
181
287
|
|
|
182
|
-
res, err := s.db.Query(getUnuploadedPreKeysQuery, s.JID, count)
|
|
288
|
+
res, err := s.db.Query(ctx, getUnuploadedPreKeysQuery, s.JID, count)
|
|
183
289
|
if err != nil {
|
|
184
290
|
return nil, fmt.Errorf("failed to query existing prekeys: %w", err)
|
|
185
291
|
}
|
|
@@ -198,12 +304,12 @@ func (s *SQLStore) GetOrGenPreKeys(count uint32) ([]*keys.PreKey, error) {
|
|
|
198
304
|
|
|
199
305
|
if existingCount < uint32(len(newKeys)) {
|
|
200
306
|
var nextKeyID uint32
|
|
201
|
-
nextKeyID, err = s.getNextPreKeyID()
|
|
307
|
+
nextKeyID, err = s.getNextPreKeyID(ctx)
|
|
202
308
|
if err != nil {
|
|
203
309
|
return nil, err
|
|
204
310
|
}
|
|
205
311
|
for i := existingCount; i < count; i++ {
|
|
206
|
-
newKeys[i], err = s.genOnePreKey(nextKeyID, false)
|
|
312
|
+
newKeys[i], err = s.genOnePreKey(ctx, nextKeyID, false)
|
|
207
313
|
if err != nil {
|
|
208
314
|
return nil, fmt.Errorf("failed to generate prekey: %w", err)
|
|
209
315
|
}
|
|
@@ -214,7 +320,7 @@ func (s *SQLStore) GetOrGenPreKeys(count uint32) ([]*keys.PreKey, error) {
|
|
|
214
320
|
return newKeys, nil
|
|
215
321
|
}
|
|
216
322
|
|
|
217
|
-
func scanPreKey(row
|
|
323
|
+
func scanPreKey(row dbutil.Scannable) (*keys.PreKey, error) {
|
|
218
324
|
var priv []byte
|
|
219
325
|
var id uint32
|
|
220
326
|
err := row.Scan(&id, &priv)
|
|
@@ -231,22 +337,22 @@ func scanPreKey(row scannable) (*keys.PreKey, error) {
|
|
|
231
337
|
}, nil
|
|
232
338
|
}
|
|
233
339
|
|
|
234
|
-
func (s *SQLStore) GetPreKey(id uint32) (*keys.PreKey, error) {
|
|
235
|
-
return scanPreKey(s.db.QueryRow(getPreKeyQuery, s.JID, id))
|
|
340
|
+
func (s *SQLStore) GetPreKey(ctx context.Context, id uint32) (*keys.PreKey, error) {
|
|
341
|
+
return scanPreKey(s.db.QueryRow(ctx, getPreKeyQuery, s.JID, id))
|
|
236
342
|
}
|
|
237
343
|
|
|
238
|
-
func (s *SQLStore) RemovePreKey(id uint32) error {
|
|
239
|
-
_, err := s.db.Exec(deletePreKeyQuery, s.JID, id)
|
|
344
|
+
func (s *SQLStore) RemovePreKey(ctx context.Context, id uint32) error {
|
|
345
|
+
_, err := s.db.Exec(ctx, deletePreKeyQuery, s.JID, id)
|
|
240
346
|
return err
|
|
241
347
|
}
|
|
242
348
|
|
|
243
|
-
func (s *SQLStore) MarkPreKeysAsUploaded(upToID uint32) error {
|
|
244
|
-
_, err := s.db.Exec(markPreKeysAsUploadedQuery, s.JID, upToID)
|
|
349
|
+
func (s *SQLStore) MarkPreKeysAsUploaded(ctx context.Context, upToID uint32) error {
|
|
350
|
+
_, err := s.db.Exec(ctx, markPreKeysAsUploadedQuery, s.JID, upToID)
|
|
245
351
|
return err
|
|
246
352
|
}
|
|
247
353
|
|
|
248
|
-
func (s *SQLStore) UploadedPreKeyCount() (count int, err error) {
|
|
249
|
-
err = s.db.QueryRow(getUploadedPreKeyCountQuery, s.JID).Scan(&count)
|
|
354
|
+
func (s *SQLStore) UploadedPreKeyCount(ctx context.Context) (count int, err error) {
|
|
355
|
+
err = s.db.QueryRow(ctx, getUploadedPreKeyCountQuery, s.JID).Scan(&count)
|
|
250
356
|
return
|
|
251
357
|
}
|
|
252
358
|
|
|
@@ -258,13 +364,13 @@ const (
|
|
|
258
364
|
`
|
|
259
365
|
)
|
|
260
366
|
|
|
261
|
-
func (s *SQLStore) PutSenderKey(group, user string, session []byte) error {
|
|
262
|
-
_, err := s.db.Exec(putSenderKeyQuery, s.JID, group, user, session)
|
|
367
|
+
func (s *SQLStore) PutSenderKey(ctx context.Context, group, user string, session []byte) error {
|
|
368
|
+
_, err := s.db.Exec(ctx, putSenderKeyQuery, s.JID, group, user, session)
|
|
263
369
|
return err
|
|
264
370
|
}
|
|
265
371
|
|
|
266
|
-
func (s *SQLStore) GetSenderKey(group, user string) (key []byte, err error) {
|
|
267
|
-
err = s.db.QueryRow(getSenderKeyQuery, s.JID, group, user).Scan(&key)
|
|
372
|
+
func (s *SQLStore) GetSenderKey(ctx context.Context, group, user string) (key []byte, err error) {
|
|
373
|
+
err = s.db.QueryRow(ctx, getSenderKeyQuery, s.JID, group, user).Scan(&key)
|
|
268
374
|
if errors.Is(err, sql.ErrNoRows) {
|
|
269
375
|
err = nil
|
|
270
376
|
}
|
|
@@ -282,23 +388,23 @@ const (
|
|
|
282
388
|
getLatestAppStateSyncKeyIDQuery = `SELECT key_id FROM whatsmeow_app_state_sync_keys WHERE jid=$1 ORDER BY timestamp DESC LIMIT 1`
|
|
283
389
|
)
|
|
284
390
|
|
|
285
|
-
func (s *SQLStore) PutAppStateSyncKey(id []byte, key store.AppStateSyncKey) error {
|
|
286
|
-
_, err := s.db.Exec(putAppStateSyncKeyQuery, s.JID, id, key.Data, key.Timestamp, key.Fingerprint)
|
|
391
|
+
func (s *SQLStore) PutAppStateSyncKey(ctx context.Context, id []byte, key store.AppStateSyncKey) error {
|
|
392
|
+
_, err := s.db.Exec(ctx, putAppStateSyncKeyQuery, s.JID, id, key.Data, key.Timestamp, key.Fingerprint)
|
|
287
393
|
return err
|
|
288
394
|
}
|
|
289
395
|
|
|
290
|
-
func (s *SQLStore) GetAppStateSyncKey(id []byte) (*store.AppStateSyncKey, error) {
|
|
396
|
+
func (s *SQLStore) GetAppStateSyncKey(ctx context.Context, id []byte) (*store.AppStateSyncKey, error) {
|
|
291
397
|
var key store.AppStateSyncKey
|
|
292
|
-
err := s.db.QueryRow(getAppStateSyncKeyQuery, s.JID, id).Scan(&key.Data, &key.Timestamp, &key.Fingerprint)
|
|
398
|
+
err := s.db.QueryRow(ctx, getAppStateSyncKeyQuery, s.JID, id).Scan(&key.Data, &key.Timestamp, &key.Fingerprint)
|
|
293
399
|
if errors.Is(err, sql.ErrNoRows) {
|
|
294
400
|
return nil, nil
|
|
295
401
|
}
|
|
296
402
|
return &key, err
|
|
297
403
|
}
|
|
298
404
|
|
|
299
|
-
func (s *SQLStore) GetLatestAppStateSyncKeyID() ([]byte, error) {
|
|
405
|
+
func (s *SQLStore) GetLatestAppStateSyncKeyID(ctx context.Context) ([]byte, error) {
|
|
300
406
|
var keyID []byte
|
|
301
|
-
err := s.db.QueryRow(getLatestAppStateSyncKeyIDQuery, s.JID).Scan(&keyID)
|
|
407
|
+
err := s.db.QueryRow(ctx, getLatestAppStateSyncKeyIDQuery, s.JID).Scan(&keyID)
|
|
302
408
|
if errors.Is(err, sql.ErrNoRows) {
|
|
303
409
|
return nil, nil
|
|
304
410
|
}
|
|
@@ -318,14 +424,14 @@ const (
|
|
|
318
424
|
getAppStateMutationMACQuery = `SELECT value_mac FROM whatsmeow_app_state_mutation_macs WHERE jid=$1 AND name=$2 AND index_mac=$3 ORDER BY version DESC LIMIT 1`
|
|
319
425
|
)
|
|
320
426
|
|
|
321
|
-
func (s *SQLStore) PutAppStateVersion(name string, version uint64, hash [128]byte) error {
|
|
322
|
-
_, err := s.db.Exec(putAppStateVersionQuery, s.JID, name, version, hash[:])
|
|
427
|
+
func (s *SQLStore) PutAppStateVersion(ctx context.Context, name string, version uint64, hash [128]byte) error {
|
|
428
|
+
_, err := s.db.Exec(ctx, putAppStateVersionQuery, s.JID, name, version, hash[:])
|
|
323
429
|
return err
|
|
324
430
|
}
|
|
325
431
|
|
|
326
|
-
func (s *SQLStore) GetAppStateVersion(name string) (version uint64, hash [128]byte, err error) {
|
|
432
|
+
func (s *SQLStore) GetAppStateVersion(ctx context.Context, name string) (version uint64, hash [128]byte, err error) {
|
|
327
433
|
var uncheckedHash []byte
|
|
328
|
-
err = s.db.QueryRow(getAppStateVersionQuery, s.JID, name).Scan(&version, &uncheckedHash)
|
|
434
|
+
err = s.db.QueryRow(ctx, getAppStateVersionQuery, s.JID, name).Scan(&version, &uncheckedHash)
|
|
329
435
|
if errors.Is(err, sql.ErrNoRows) {
|
|
330
436
|
// version will be 0 and hash will be an empty array, which is the correct initial state
|
|
331
437
|
err = nil
|
|
@@ -341,23 +447,19 @@ func (s *SQLStore) GetAppStateVersion(name string) (version uint64, hash [128]by
|
|
|
341
447
|
return
|
|
342
448
|
}
|
|
343
449
|
|
|
344
|
-
func (s *SQLStore) DeleteAppStateVersion(name string) error {
|
|
345
|
-
_, err := s.db.Exec(deleteAppStateVersionQuery, s.JID, name)
|
|
450
|
+
func (s *SQLStore) DeleteAppStateVersion(ctx context.Context, name string) error {
|
|
451
|
+
_, err := s.db.Exec(ctx, deleteAppStateVersionQuery, s.JID, name)
|
|
346
452
|
return err
|
|
347
453
|
}
|
|
348
454
|
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
func (s *SQLStore) putAppStateMutationMACs(tx execable, name string, version uint64, mutations []store.AppStateMutationMAC) error {
|
|
354
|
-
values := make([]interface{}, 3+len(mutations)*2)
|
|
455
|
+
func (s *SQLStore) putAppStateMutationMACs(ctx context.Context, name string, version uint64, mutations []store.AppStateMutationMAC) error {
|
|
456
|
+
values := make([]any, 3+len(mutations)*2)
|
|
355
457
|
queryParts := make([]string, len(mutations))
|
|
356
458
|
values[0] = s.JID
|
|
357
459
|
values[1] = name
|
|
358
460
|
values[2] = version
|
|
359
461
|
placeholderSyntax := "($1, $2, $3, $%d, $%d)"
|
|
360
|
-
if s.
|
|
462
|
+
if s.db.Dialect == dbutil.SQLite {
|
|
361
463
|
placeholderSyntax = "(?1, ?2, ?3, ?%d, ?%d)"
|
|
362
464
|
}
|
|
363
465
|
for i, mutation := range mutations {
|
|
@@ -366,50 +468,35 @@ func (s *SQLStore) putAppStateMutationMACs(tx execable, name string, version uin
|
|
|
366
468
|
values[baseIndex+1] = mutation.ValueMAC
|
|
367
469
|
queryParts[i] = fmt.Sprintf(placeholderSyntax, baseIndex+1, baseIndex+2)
|
|
368
470
|
}
|
|
369
|
-
_, err :=
|
|
471
|
+
_, err := s.db.Exec(ctx, putAppStateMutationMACsQuery+strings.Join(queryParts, ","), values...)
|
|
370
472
|
return err
|
|
371
473
|
}
|
|
372
474
|
|
|
373
475
|
const mutationBatchSize = 400
|
|
374
476
|
|
|
375
|
-
func (s *SQLStore) PutAppStateMutationMACs(name string, version uint64, mutations []store.AppStateMutationMAC) error {
|
|
376
|
-
if len(mutations)
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
var mutationSlice []store.AppStateMutationMAC
|
|
383
|
-
if len(mutations) > i+mutationBatchSize {
|
|
384
|
-
mutationSlice = mutations[i : i+mutationBatchSize]
|
|
385
|
-
} else {
|
|
386
|
-
mutationSlice = mutations[i:]
|
|
387
|
-
}
|
|
388
|
-
err = s.putAppStateMutationMACs(tx, name, version, mutationSlice)
|
|
477
|
+
func (s *SQLStore) PutAppStateMutationMACs(ctx context.Context, name string, version uint64, mutations []store.AppStateMutationMAC) error {
|
|
478
|
+
if len(mutations) == 0 {
|
|
479
|
+
return nil
|
|
480
|
+
}
|
|
481
|
+
return s.db.DoTxn(ctx, nil, func(ctx context.Context) error {
|
|
482
|
+
for slice := range slices.Chunk(mutations, mutationBatchSize) {
|
|
483
|
+
err := s.putAppStateMutationMACs(ctx, name, version, slice)
|
|
389
484
|
if err != nil {
|
|
390
|
-
_ = tx.Rollback()
|
|
391
485
|
return err
|
|
392
486
|
}
|
|
393
487
|
}
|
|
394
|
-
err = tx.Commit()
|
|
395
|
-
if err != nil {
|
|
396
|
-
return fmt.Errorf("failed to commit transaction: %w", err)
|
|
397
|
-
}
|
|
398
488
|
return nil
|
|
399
|
-
}
|
|
400
|
-
return s.putAppStateMutationMACs(s.db, name, version, mutations)
|
|
401
|
-
}
|
|
402
|
-
return nil
|
|
489
|
+
})
|
|
403
490
|
}
|
|
404
491
|
|
|
405
|
-
func (s *SQLStore) DeleteAppStateMutationMACs(name string, indexMACs [][]byte) (err error) {
|
|
492
|
+
func (s *SQLStore) DeleteAppStateMutationMACs(ctx context.Context, name string, indexMACs [][]byte) (err error) {
|
|
406
493
|
if len(indexMACs) == 0 {
|
|
407
494
|
return
|
|
408
495
|
}
|
|
409
|
-
if s.
|
|
410
|
-
_, err = s.db.Exec(deleteAppStateMutationMACsQueryPostgres, s.JID, name, PostgresArrayWrapper(indexMACs))
|
|
496
|
+
if s.db.Dialect == dbutil.Postgres && PostgresArrayWrapper != nil {
|
|
497
|
+
_, err = s.db.Exec(ctx, deleteAppStateMutationMACsQueryPostgres, s.JID, name, PostgresArrayWrapper(indexMACs))
|
|
411
498
|
} else {
|
|
412
|
-
args := make([]
|
|
499
|
+
args := make([]any, 2+len(indexMACs))
|
|
413
500
|
args[0] = s.JID
|
|
414
501
|
args[1] = name
|
|
415
502
|
queryParts := make([]string, len(indexMACs))
|
|
@@ -417,13 +504,13 @@ func (s *SQLStore) DeleteAppStateMutationMACs(name string, indexMACs [][]byte) (
|
|
|
417
504
|
args[2+i] = item
|
|
418
505
|
queryParts[i] = fmt.Sprintf("$%d", i+3)
|
|
419
506
|
}
|
|
420
|
-
_, err = s.db.Exec(deleteAppStateMutationMACsQueryGeneric+"("+strings.Join(queryParts, ",")+")", args...)
|
|
507
|
+
_, err = s.db.Exec(ctx, deleteAppStateMutationMACsQueryGeneric+"("+strings.Join(queryParts, ",")+")", args...)
|
|
421
508
|
}
|
|
422
509
|
return
|
|
423
510
|
}
|
|
424
511
|
|
|
425
|
-
func (s *SQLStore) GetAppStateMutationMAC(name string, indexMAC []byte) (valueMAC []byte, err error) {
|
|
426
|
-
err = s.db.QueryRow(getAppStateMutationMACQuery, s.JID, name, indexMAC).Scan(&valueMAC)
|
|
512
|
+
func (s *SQLStore) GetAppStateMutationMAC(ctx context.Context, name string, indexMAC []byte) (valueMAC []byte, err error) {
|
|
513
|
+
err = s.db.QueryRow(ctx, getAppStateMutationMACQuery, s.JID, name, indexMAC).Scan(&valueMAC)
|
|
427
514
|
if errors.Is(err, sql.ErrNoRows) {
|
|
428
515
|
err = nil
|
|
429
516
|
}
|
|
@@ -456,16 +543,16 @@ const (
|
|
|
456
543
|
`
|
|
457
544
|
)
|
|
458
545
|
|
|
459
|
-
func (s *SQLStore) PutPushName(user types.JID, pushName string) (bool, string, error) {
|
|
546
|
+
func (s *SQLStore) PutPushName(ctx context.Context, user types.JID, pushName string) (bool, string, error) {
|
|
460
547
|
s.contactCacheLock.Lock()
|
|
461
548
|
defer s.contactCacheLock.Unlock()
|
|
462
549
|
|
|
463
|
-
cached, err := s.getContact(user)
|
|
550
|
+
cached, err := s.getContact(ctx, user)
|
|
464
551
|
if err != nil {
|
|
465
552
|
return false, "", err
|
|
466
553
|
}
|
|
467
554
|
if cached.PushName != pushName {
|
|
468
|
-
_, err = s.db.Exec(putPushNameQuery, s.JID, user, pushName)
|
|
555
|
+
_, err = s.db.Exec(ctx, putPushNameQuery, s.JID, user, pushName)
|
|
469
556
|
if err != nil {
|
|
470
557
|
return false, "", err
|
|
471
558
|
}
|
|
@@ -477,16 +564,16 @@ func (s *SQLStore) PutPushName(user types.JID, pushName string) (bool, string, e
|
|
|
477
564
|
return false, "", nil
|
|
478
565
|
}
|
|
479
566
|
|
|
480
|
-
func (s *SQLStore) PutBusinessName(user types.JID, businessName string) (bool, string, error) {
|
|
567
|
+
func (s *SQLStore) PutBusinessName(ctx context.Context, user types.JID, businessName string) (bool, string, error) {
|
|
481
568
|
s.contactCacheLock.Lock()
|
|
482
569
|
defer s.contactCacheLock.Unlock()
|
|
483
570
|
|
|
484
|
-
cached, err := s.getContact(user)
|
|
571
|
+
cached, err := s.getContact(ctx, user)
|
|
485
572
|
if err != nil {
|
|
486
573
|
return false, "", err
|
|
487
574
|
}
|
|
488
575
|
if cached.BusinessName != businessName {
|
|
489
|
-
_, err = s.db.Exec(putBusinessNameQuery, s.JID, user, businessName)
|
|
576
|
+
_, err = s.db.Exec(ctx, putBusinessNameQuery, s.JID, user, businessName)
|
|
490
577
|
if err != nil {
|
|
491
578
|
return false, "", err
|
|
492
579
|
}
|
|
@@ -498,16 +585,16 @@ func (s *SQLStore) PutBusinessName(user types.JID, businessName string) (bool, s
|
|
|
498
585
|
return false, "", nil
|
|
499
586
|
}
|
|
500
587
|
|
|
501
|
-
func (s *SQLStore) PutContactName(user types.JID, firstName, fullName string) error {
|
|
588
|
+
func (s *SQLStore) PutContactName(ctx context.Context, user types.JID, firstName, fullName string) error {
|
|
502
589
|
s.contactCacheLock.Lock()
|
|
503
590
|
defer s.contactCacheLock.Unlock()
|
|
504
591
|
|
|
505
|
-
cached, err := s.getContact(user)
|
|
592
|
+
cached, err := s.getContact(ctx, user)
|
|
506
593
|
if err != nil {
|
|
507
594
|
return err
|
|
508
595
|
}
|
|
509
596
|
if cached.FirstName != firstName || cached.FullName != fullName {
|
|
510
|
-
_, err = s.db.Exec(putContactNameQuery, s.JID, user, firstName, fullName)
|
|
597
|
+
_, err = s.db.Exec(ctx, putContactNameQuery, s.JID, user, firstName, fullName)
|
|
511
598
|
if err != nil {
|
|
512
599
|
return err
|
|
513
600
|
}
|
|
@@ -520,12 +607,12 @@ func (s *SQLStore) PutContactName(user types.JID, firstName, fullName string) er
|
|
|
520
607
|
|
|
521
608
|
const contactBatchSize = 300
|
|
522
609
|
|
|
523
|
-
func (s *SQLStore) putContactNamesBatch(
|
|
524
|
-
values := make([]
|
|
610
|
+
func (s *SQLStore) putContactNamesBatch(ctx context.Context, contacts []store.ContactEntry) error {
|
|
611
|
+
values := make([]any, 1, 1+len(contacts)*3)
|
|
525
612
|
queryParts := make([]string, 0, len(contacts))
|
|
526
613
|
values[0] = s.JID
|
|
527
614
|
placeholderSyntax := "($1, $%d, $%d, $%d)"
|
|
528
|
-
if s.
|
|
615
|
+
if s.db.Dialect == dbutil.SQLite {
|
|
529
616
|
placeholderSyntax = "(?1, ?%d, ?%d, ?%d)"
|
|
530
617
|
}
|
|
531
618
|
i := 0
|
|
@@ -547,40 +634,25 @@ func (s *SQLStore) putContactNamesBatch(tx execable, contacts []store.ContactEnt
|
|
|
547
634
|
queryParts = append(queryParts, fmt.Sprintf(placeholderSyntax, baseIndex+1, baseIndex+2, baseIndex+3))
|
|
548
635
|
i++
|
|
549
636
|
}
|
|
550
|
-
_, err :=
|
|
637
|
+
_, err := s.db.Exec(ctx, fmt.Sprintf(putManyContactNamesQuery, strings.Join(queryParts, ",")), values...)
|
|
551
638
|
return err
|
|
552
639
|
}
|
|
553
640
|
|
|
554
|
-
func (s *SQLStore) PutAllContactNames(contacts []store.ContactEntry) error {
|
|
555
|
-
if len(contacts)
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
var contactSlice []store.ContactEntry
|
|
562
|
-
if len(contacts) > i+contactBatchSize {
|
|
563
|
-
contactSlice = contacts[i : i+contactBatchSize]
|
|
564
|
-
} else {
|
|
565
|
-
contactSlice = contacts[i:]
|
|
566
|
-
}
|
|
567
|
-
err = s.putContactNamesBatch(tx, contactSlice)
|
|
641
|
+
func (s *SQLStore) PutAllContactNames(ctx context.Context, contacts []store.ContactEntry) error {
|
|
642
|
+
if len(contacts) == 0 {
|
|
643
|
+
return nil
|
|
644
|
+
}
|
|
645
|
+
err := s.db.DoTxn(ctx, nil, func(ctx context.Context) error {
|
|
646
|
+
for slice := range slices.Chunk(contacts, contactBatchSize) {
|
|
647
|
+
err := s.putContactNamesBatch(ctx, slice)
|
|
568
648
|
if err != nil {
|
|
569
|
-
_ = tx.Rollback()
|
|
570
649
|
return err
|
|
571
650
|
}
|
|
572
651
|
}
|
|
573
|
-
err = tx.Commit()
|
|
574
|
-
if err != nil {
|
|
575
|
-
return fmt.Errorf("failed to commit transaction: %w", err)
|
|
576
|
-
}
|
|
577
|
-
} else if len(contacts) > 0 {
|
|
578
|
-
err := s.putContactNamesBatch(s.db, contacts)
|
|
579
|
-
if err != nil {
|
|
580
|
-
return err
|
|
581
|
-
}
|
|
582
|
-
} else {
|
|
583
652
|
return nil
|
|
653
|
+
})
|
|
654
|
+
if err != nil {
|
|
655
|
+
return err
|
|
584
656
|
}
|
|
585
657
|
s.contactCacheLock.Lock()
|
|
586
658
|
// Just clear the cache, fetching pushnames and business names would be too much effort
|
|
@@ -589,14 +661,14 @@ func (s *SQLStore) PutAllContactNames(contacts []store.ContactEntry) error {
|
|
|
589
661
|
return nil
|
|
590
662
|
}
|
|
591
663
|
|
|
592
|
-
func (s *SQLStore) getContact(user types.JID) (*types.ContactInfo, error) {
|
|
664
|
+
func (s *SQLStore) getContact(ctx context.Context, user types.JID) (*types.ContactInfo, error) {
|
|
593
665
|
cached, ok := s.contactCache[user]
|
|
594
666
|
if ok {
|
|
595
667
|
return cached, nil
|
|
596
668
|
}
|
|
597
669
|
|
|
598
670
|
var first, full, push, business sql.NullString
|
|
599
|
-
err := s.db.QueryRow(getContactQuery, s.JID, user).Scan(&first, &full, &push, &business)
|
|
671
|
+
err := s.db.QueryRow(ctx, getContactQuery, s.JID, user).Scan(&first, &full, &push, &business)
|
|
600
672
|
if err != nil && !errors.Is(err, sql.ErrNoRows) {
|
|
601
673
|
return nil, err
|
|
602
674
|
}
|
|
@@ -611,9 +683,9 @@ func (s *SQLStore) getContact(user types.JID) (*types.ContactInfo, error) {
|
|
|
611
683
|
return info, nil
|
|
612
684
|
}
|
|
613
685
|
|
|
614
|
-
func (s *SQLStore) GetContact(user types.JID) (types.ContactInfo, error) {
|
|
686
|
+
func (s *SQLStore) GetContact(ctx context.Context, user types.JID) (types.ContactInfo, error) {
|
|
615
687
|
s.contactCacheLock.Lock()
|
|
616
|
-
info, err := s.getContact(user)
|
|
688
|
+
info, err := s.getContact(ctx, user)
|
|
617
689
|
s.contactCacheLock.Unlock()
|
|
618
690
|
if err != nil {
|
|
619
691
|
return types.ContactInfo{}, err
|
|
@@ -621,10 +693,10 @@ func (s *SQLStore) GetContact(user types.JID) (types.ContactInfo, error) {
|
|
|
621
693
|
return *info, nil
|
|
622
694
|
}
|
|
623
695
|
|
|
624
|
-
func (s *SQLStore) GetAllContacts() (map[types.JID]types.ContactInfo, error) {
|
|
696
|
+
func (s *SQLStore) GetAllContacts(ctx context.Context) (map[types.JID]types.ContactInfo, error) {
|
|
625
697
|
s.contactCacheLock.Lock()
|
|
626
698
|
defer s.contactCacheLock.Unlock()
|
|
627
|
-
rows, err := s.db.Query(getAllContactsQuery, s.JID)
|
|
699
|
+
rows, err := s.db.Query(ctx, getAllContactsQuery, s.JID)
|
|
628
700
|
if err != nil {
|
|
629
701
|
return nil, err
|
|
630
702
|
}
|
|
@@ -659,28 +731,30 @@ const (
|
|
|
659
731
|
`
|
|
660
732
|
)
|
|
661
733
|
|
|
662
|
-
func (s *SQLStore) PutMutedUntil(chat types.JID, mutedUntil time.Time) error {
|
|
734
|
+
func (s *SQLStore) PutMutedUntil(ctx context.Context, chat types.JID, mutedUntil time.Time) error {
|
|
663
735
|
var val int64
|
|
664
|
-
if
|
|
736
|
+
if mutedUntil == store.MutedForever {
|
|
737
|
+
val = -1
|
|
738
|
+
} else if !mutedUntil.IsZero() {
|
|
665
739
|
val = mutedUntil.Unix()
|
|
666
740
|
}
|
|
667
|
-
_, err := s.db.Exec(fmt.Sprintf(putChatSettingQuery, "muted_until"), s.JID, chat, val)
|
|
741
|
+
_, err := s.db.Exec(ctx, fmt.Sprintf(putChatSettingQuery, "muted_until"), s.JID, chat, val)
|
|
668
742
|
return err
|
|
669
743
|
}
|
|
670
744
|
|
|
671
|
-
func (s *SQLStore) PutPinned(chat types.JID, pinned bool) error {
|
|
672
|
-
_, err := s.db.Exec(fmt.Sprintf(putChatSettingQuery, "pinned"), s.JID, chat, pinned)
|
|
745
|
+
func (s *SQLStore) PutPinned(ctx context.Context, chat types.JID, pinned bool) error {
|
|
746
|
+
_, err := s.db.Exec(ctx, fmt.Sprintf(putChatSettingQuery, "pinned"), s.JID, chat, pinned)
|
|
673
747
|
return err
|
|
674
748
|
}
|
|
675
749
|
|
|
676
|
-
func (s *SQLStore) PutArchived(chat types.JID, archived bool) error {
|
|
677
|
-
_, err := s.db.Exec(fmt.Sprintf(putChatSettingQuery, "archived"), s.JID, chat, archived)
|
|
750
|
+
func (s *SQLStore) PutArchived(ctx context.Context, chat types.JID, archived bool) error {
|
|
751
|
+
_, err := s.db.Exec(ctx, fmt.Sprintf(putChatSettingQuery, "archived"), s.JID, chat, archived)
|
|
678
752
|
return err
|
|
679
753
|
}
|
|
680
754
|
|
|
681
|
-
func (s *SQLStore) GetChatSettings(chat types.JID) (settings types.LocalChatSettings, err error) {
|
|
755
|
+
func (s *SQLStore) GetChatSettings(ctx context.Context, chat types.JID) (settings types.LocalChatSettings, err error) {
|
|
682
756
|
var mutedUntil int64
|
|
683
|
-
err = s.db.QueryRow(getChatSettingsQuery, s.JID, chat).Scan(&mutedUntil, &settings.Pinned, &settings.Archived)
|
|
757
|
+
err = s.db.QueryRow(ctx, getChatSettingsQuery, s.JID, chat).Scan(&mutedUntil, &settings.Pinned, &settings.Archived)
|
|
684
758
|
if errors.Is(err, sql.ErrNoRows) {
|
|
685
759
|
err = nil
|
|
686
760
|
} else if err != nil {
|
|
@@ -688,7 +762,9 @@ func (s *SQLStore) GetChatSettings(chat types.JID) (settings types.LocalChatSett
|
|
|
688
762
|
} else {
|
|
689
763
|
settings.Found = true
|
|
690
764
|
}
|
|
691
|
-
if mutedUntil
|
|
765
|
+
if mutedUntil < 0 {
|
|
766
|
+
settings.MutedUntil = store.MutedForever
|
|
767
|
+
} else if mutedUntil > 0 {
|
|
692
768
|
settings.MutedUntil = time.Unix(mutedUntil, 0)
|
|
693
769
|
}
|
|
694
770
|
return
|
|
@@ -701,32 +777,48 @@ const (
|
|
|
701
777
|
ON CONFLICT (our_jid, chat_jid, sender_jid, message_id) DO NOTHING
|
|
702
778
|
`
|
|
703
779
|
getMsgSecret = `
|
|
704
|
-
SELECT key
|
|
780
|
+
SELECT key, sender_jid
|
|
781
|
+
FROM whatsmeow_message_secrets
|
|
782
|
+
WHERE our_jid=$1 AND (chat_jid=$2 OR chat_jid=(
|
|
783
|
+
CASE
|
|
784
|
+
WHEN $2 LIKE '%@lid'
|
|
785
|
+
THEN (SELECT pn || '@s.whatsapp.net' FROM whatsmeow_lid_map WHERE lid=replace($2, '@lid', ''))
|
|
786
|
+
WHEN $2 LIKE '%@s.whatsapp.net'
|
|
787
|
+
THEN (SELECT lid || '@lid' FROM whatsmeow_lid_map WHERE lid=replace($2, '@s.whatsapp.net', ''))
|
|
788
|
+
END
|
|
789
|
+
)) AND message_id=$4 AND (sender_jid=$3 OR sender_jid=(
|
|
790
|
+
CASE
|
|
791
|
+
WHEN $3 LIKE '%@lid'
|
|
792
|
+
THEN (SELECT pn || '@s.whatsapp.net' FROM whatsmeow_lid_map WHERE lid=replace($3, '@lid', ''))
|
|
793
|
+
WHEN $3 LIKE '%@s.whatsapp.net'
|
|
794
|
+
THEN (SELECT lid || '@lid' FROM whatsmeow_lid_map WHERE lid=replace($3, '@s.whatsapp.net', ''))
|
|
795
|
+
END
|
|
796
|
+
))
|
|
705
797
|
`
|
|
706
798
|
)
|
|
707
799
|
|
|
708
|
-
func (s *SQLStore) PutMessageSecrets(inserts []store.MessageSecretInsert) (err error) {
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
return fmt.Errorf("failed to begin transaction: %w", err)
|
|
712
|
-
}
|
|
713
|
-
for _, insert := range inserts {
|
|
714
|
-
_, err = tx.Exec(putMsgSecret, s.JID, insert.Chat.ToNonAD(), insert.Sender.ToNonAD(), insert.ID, insert.Secret)
|
|
715
|
-
}
|
|
716
|
-
err = tx.Commit()
|
|
717
|
-
if err != nil {
|
|
718
|
-
return fmt.Errorf("failed to commit transaction: %w", err)
|
|
800
|
+
func (s *SQLStore) PutMessageSecrets(ctx context.Context, inserts []store.MessageSecretInsert) (err error) {
|
|
801
|
+
if len(inserts) == 0 {
|
|
802
|
+
return nil
|
|
719
803
|
}
|
|
720
|
-
return
|
|
804
|
+
return s.db.DoTxn(ctx, nil, func(ctx context.Context) error {
|
|
805
|
+
for _, insert := range inserts {
|
|
806
|
+
_, err = s.db.Exec(ctx, putMsgSecret, s.JID, insert.Chat.ToNonAD(), insert.Sender.ToNonAD(), insert.ID, insert.Secret)
|
|
807
|
+
if err != nil {
|
|
808
|
+
return err
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
return nil
|
|
812
|
+
})
|
|
721
813
|
}
|
|
722
814
|
|
|
723
|
-
func (s *SQLStore) PutMessageSecret(chat, sender types.JID, id types.MessageID, secret []byte) (err error) {
|
|
724
|
-
_, err = s.db.Exec(putMsgSecret, s.JID, chat.ToNonAD(), sender.ToNonAD(), id, secret)
|
|
815
|
+
func (s *SQLStore) PutMessageSecret(ctx context.Context, chat, sender types.JID, id types.MessageID, secret []byte) (err error) {
|
|
816
|
+
_, err = s.db.Exec(ctx, putMsgSecret, s.JID, chat.ToNonAD(), sender.ToNonAD(), id, secret)
|
|
725
817
|
return
|
|
726
818
|
}
|
|
727
819
|
|
|
728
|
-
func (s *SQLStore) GetMessageSecret(chat, sender types.JID, id types.MessageID) (secret []byte, err error) {
|
|
729
|
-
err = s.db.QueryRow(getMsgSecret, s.JID, chat.ToNonAD(), sender.ToNonAD(), id).Scan(&secret)
|
|
820
|
+
func (s *SQLStore) GetMessageSecret(ctx context.Context, chat, sender types.JID, id types.MessageID) (secret []byte, realSender types.JID, err error) {
|
|
821
|
+
err = s.db.QueryRow(ctx, getMsgSecret, s.JID, chat.ToNonAD(), sender.ToNonAD(), id).Scan(&secret, &realSender)
|
|
730
822
|
if errors.Is(err, sql.ErrNoRows) {
|
|
731
823
|
err = nil
|
|
732
824
|
}
|
|
@@ -742,7 +834,7 @@ const (
|
|
|
742
834
|
getPrivacyToken = `SELECT token, timestamp FROM whatsmeow_privacy_tokens WHERE our_jid=$1 AND their_jid=$2`
|
|
743
835
|
)
|
|
744
836
|
|
|
745
|
-
func (s *SQLStore) PutPrivacyTokens(tokens ...store.PrivacyToken) error {
|
|
837
|
+
func (s *SQLStore) PutPrivacyTokens(ctx context.Context, tokens ...store.PrivacyToken) error {
|
|
746
838
|
args := make([]any, 1+len(tokens)*3)
|
|
747
839
|
placeholders := make([]string, len(tokens))
|
|
748
840
|
args[0] = s.JID
|
|
@@ -753,15 +845,15 @@ func (s *SQLStore) PutPrivacyTokens(tokens ...store.PrivacyToken) error {
|
|
|
753
845
|
placeholders[i] = fmt.Sprintf("($1, $%d, $%d, $%d)", i*3+2, i*3+3, i*3+4)
|
|
754
846
|
}
|
|
755
847
|
query := strings.ReplaceAll(putPrivacyTokens, "($1, $2, $3, $4)", strings.Join(placeholders, ","))
|
|
756
|
-
_, err := s.db.Exec(query, args...)
|
|
848
|
+
_, err := s.db.Exec(ctx, query, args...)
|
|
757
849
|
return err
|
|
758
850
|
}
|
|
759
851
|
|
|
760
|
-
func (s *SQLStore) GetPrivacyToken(user types.JID) (*store.PrivacyToken, error) {
|
|
852
|
+
func (s *SQLStore) GetPrivacyToken(ctx context.Context, user types.JID) (*store.PrivacyToken, error) {
|
|
761
853
|
var token store.PrivacyToken
|
|
762
854
|
token.User = user.ToNonAD()
|
|
763
855
|
var ts int64
|
|
764
|
-
err := s.db.QueryRow(getPrivacyToken, s.JID, token.User).Scan(&token.Token, &ts)
|
|
856
|
+
err := s.db.QueryRow(ctx, getPrivacyToken, s.JID, token.User).Scan(&token.Token, &ts)
|
|
765
857
|
if errors.Is(err, sql.ErrNoRows) {
|
|
766
858
|
return nil, nil
|
|
767
859
|
} else if err != nil {
|
|
@@ -771,3 +863,55 @@ func (s *SQLStore) GetPrivacyToken(user types.JID) (*store.PrivacyToken, error)
|
|
|
771
863
|
return &token, nil
|
|
772
864
|
}
|
|
773
865
|
}
|
|
866
|
+
|
|
867
|
+
const (
|
|
868
|
+
getBufferedEventQuery = `
|
|
869
|
+
SELECT plaintext, server_timestamp, insert_timestamp FROM whatsmeow_event_buffer WHERE our_jid = $1 AND ciphertext_hash = $2
|
|
870
|
+
`
|
|
871
|
+
putBufferedEventQuery = `
|
|
872
|
+
INSERT INTO whatsmeow_event_buffer (our_jid, ciphertext_hash, plaintext, server_timestamp, insert_timestamp)
|
|
873
|
+
VALUES ($1, $2, $3, $4, $5)
|
|
874
|
+
`
|
|
875
|
+
clearBufferedEventPlaintextQuery = `
|
|
876
|
+
UPDATE whatsmeow_event_buffer SET plaintext = NULL WHERE our_jid = $1 AND ciphertext_hash = $2
|
|
877
|
+
`
|
|
878
|
+
deleteOldBufferedHashesQuery = `
|
|
879
|
+
DELETE FROM whatsmeow_event_buffer WHERE insert_timestamp < $1
|
|
880
|
+
`
|
|
881
|
+
)
|
|
882
|
+
|
|
883
|
+
func (s *SQLStore) GetBufferedEvent(ctx context.Context, ciphertextHash [32]byte) (*store.BufferedEvent, error) {
|
|
884
|
+
var insertTimeMS, serverTimeSeconds int64
|
|
885
|
+
var buf store.BufferedEvent
|
|
886
|
+
err := s.db.QueryRow(ctx, getBufferedEventQuery, s.JID, ciphertextHash[:]).Scan(&buf.Plaintext, &serverTimeSeconds, &insertTimeMS)
|
|
887
|
+
if errors.Is(err, sql.ErrNoRows) {
|
|
888
|
+
return nil, nil
|
|
889
|
+
} else if err != nil {
|
|
890
|
+
return nil, err
|
|
891
|
+
}
|
|
892
|
+
buf.ServerTime = time.Unix(serverTimeSeconds, 0)
|
|
893
|
+
buf.InsertTime = time.UnixMilli(insertTimeMS)
|
|
894
|
+
return &buf, nil
|
|
895
|
+
}
|
|
896
|
+
|
|
897
|
+
func (s *SQLStore) PutBufferedEvent(ctx context.Context, ciphertextHash [32]byte, plaintext []byte, serverTimestamp time.Time) error {
|
|
898
|
+
_, err := s.db.Exec(ctx, putBufferedEventQuery, s.JID, ciphertextHash[:], plaintext, serverTimestamp.Unix(), time.Now().UnixMilli())
|
|
899
|
+
return err
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
func (s *SQLStore) DoDecryptionTxn(ctx context.Context, fn func(context.Context) error) error {
|
|
903
|
+
ctx = context.WithValue(ctx, dbutil.ContextKeyDoTxnCallerSkip, 2)
|
|
904
|
+
return s.db.DoTxn(ctx, nil, fn)
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
func (s *SQLStore) ClearBufferedEventPlaintext(ctx context.Context, ciphertextHash [32]byte) error {
|
|
908
|
+
_, err := s.db.Exec(ctx, clearBufferedEventPlaintextQuery, s.JID, ciphertextHash[:])
|
|
909
|
+
return err
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
func (s *SQLStore) DeleteOldBufferedHashes(ctx context.Context) error {
|
|
913
|
+
// The WhatsApp servers only buffer events for 14 days,
|
|
914
|
+
// so we can safely delete anything older than that.
|
|
915
|
+
_, err := s.db.Exec(ctx, deleteOldBufferedHashesQuery, time.Now().Add(-14*24*time.Hour).UnixMilli())
|
|
916
|
+
return err
|
|
917
|
+
}
|