Update libsignal to 0.50.0
Co-authored-by: trevor-signal <131492920+trevor-signal@users.noreply.github.com>
This commit is contained in:
parent
33ec40d7b4
commit
8b969b5a0a
11 changed files with 462 additions and 157 deletions
|
@ -4373,7 +4373,7 @@ For more information on this, and how to apply and follow the GNU AGPL, see
|
|||
|
||||
```
|
||||
|
||||
## attest 0.1.0, device-transfer 0.1.0, libsignal-bridge 0.1.0, libsignal-bridge-macros 0.1.0, libsignal-core 0.1.0, libsignal-ffi 0.46.2, libsignal-jni 0.46.2, libsignal-message-backup 0.1.0, libsignal-message-backup-io 0.1.0, libsignal-message-backup-macros 0.1.0, libsignal-net 0.1.0, libsignal-node 0.46.2, libsignal-protocol 0.1.0, libsignal-svr3 0.1.0, poksho 0.7.0, signal-crypto 0.1.0, signal-media 0.1.0, signal-neon-futures 0.1.0, signal-neon-futures-tests 0.1.0, signal-pin 0.1.0, usernames 0.1.0, zkcredential 0.1.0, zkgroup 0.9.0
|
||||
## attest 0.1.0, device-transfer 0.1.0, libsignal-bridge 0.1.0, libsignal-bridge-macros 0.1.0, libsignal-core 0.1.0, libsignal-ffi 0.50.0, libsignal-jni 0.50.0, libsignal-message-backup 0.1.0, libsignal-message-backup-macros 0.1.0, libsignal-net 0.1.0, libsignal-node 0.50.0, libsignal-protocol 0.1.0, libsignal-svr3 0.1.0, poksho 0.7.0, signal-crypto 0.1.0, signal-media 0.1.0, signal-neon-futures 0.1.0, signal-neon-futures-tests 0.1.0, signal-pin 0.1.0, usernames 0.1.0, zkcredential 0.1.0, zkgroup 0.9.0
|
||||
|
||||
```
|
||||
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
|
@ -5237,7 +5237,7 @@ You should also get your employer (if you work as a programmer) or school, if an
|
|||
|
||||
```
|
||||
|
||||
## ryu 1.0.17
|
||||
## ryu 1.0.18
|
||||
|
||||
```
|
||||
Apache License
|
||||
|
@ -5419,7 +5419,7 @@ END OF TERMS AND CONDITIONS
|
|||
|
||||
```
|
||||
|
||||
## debugid 0.8.0, prost 0.12.3, prost-build 0.12.3, prost-derive 0.12.3, prost-types 0.12.3
|
||||
## debugid 0.8.0, prost 0.12.6, prost-build 0.12.6, prost-derive 0.12.6, prost-types 0.12.6
|
||||
|
||||
```
|
||||
Apache License
|
||||
|
@ -5922,7 +5922,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
|
||||
```
|
||||
|
||||
## encoding_rs 0.8.33
|
||||
## encoding_rs 0.8.34
|
||||
|
||||
```
|
||||
Copyright © WHATWG (Apple, Google, Mozilla, Microsoft).
|
||||
|
@ -6173,7 +6173,7 @@ THIS SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## rustls-webpki 0.102.2
|
||||
## rustls-webpki 0.102.4
|
||||
|
||||
```
|
||||
Except as otherwise noted, this project is licensed under the following
|
||||
|
@ -6198,7 +6198,7 @@ third-party/chromium/LICENSE.
|
|||
|
||||
```
|
||||
|
||||
## windows-core 0.52.0, windows-sys 0.45.0, windows-sys 0.48.0, windows-sys 0.52.0, windows-targets 0.42.2, windows-targets 0.48.5, windows-targets 0.52.4, windows_aarch64_msvc 0.42.2, windows_aarch64_msvc 0.48.5, windows_aarch64_msvc 0.52.4, windows_x86_64_gnu 0.48.5, windows_x86_64_gnu 0.52.4, windows_x86_64_msvc 0.42.2, windows_x86_64_msvc 0.48.5, windows_x86_64_msvc 0.52.4
|
||||
## windows-core 0.52.0, windows-sys 0.45.0, windows-sys 0.48.0, windows-sys 0.52.0, windows-targets 0.42.2, windows-targets 0.48.5, windows-targets 0.52.5, windows_aarch64_msvc 0.42.2, windows_aarch64_msvc 0.48.5, windows_aarch64_msvc 0.52.5, windows_x86_64_gnu 0.48.5, windows_x86_64_gnu 0.52.5, windows_x86_64_msvc 0.42.2, windows_x86_64_msvc 0.48.5, windows_x86_64_msvc 0.52.5
|
||||
|
||||
```
|
||||
MIT License
|
||||
|
@ -6289,7 +6289,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## lazy_static 1.4.0, rayon 1.9.0, rayon-core 1.12.1
|
||||
## lazy_static 1.4.0, rayon 1.10.0, rayon-core 1.12.1
|
||||
|
||||
```
|
||||
Copyright (c) 2010 The Rust Project Developers
|
||||
|
@ -6439,7 +6439,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## backtrace 0.3.69, cc 1.0.90, cfg-if 1.0.0, cmake 0.1.48, flate2 1.0.28, openssl-probe 0.1.5, rustc-demangle 0.1.23, socket2 0.5.6
|
||||
## backtrace 0.3.71, cc 1.0.98, cfg-if 1.0.0, cmake 0.1.48, flate2 1.0.30, openssl-probe 0.1.5, rustc-demangle 0.1.24, socket2 0.5.7
|
||||
|
||||
```
|
||||
Copyright (c) 2014 Alex Crichton
|
||||
|
@ -6502,7 +6502,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## jobserver 0.1.28
|
||||
## jobserver 0.1.31
|
||||
|
||||
```
|
||||
Copyright (c) 2014 Alex Crichton
|
||||
|
@ -6590,7 +6590,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## bitflags 1.3.2, bitflags 2.4.2, glob 0.3.1, log 0.4.21, num-bigint 0.4.4, num-derive 0.4.2, num-integer 0.1.46, num-traits 0.2.18, range-map 0.2.0, regex 1.10.3, regex-automata 0.4.6, regex-syntax 0.8.2
|
||||
## bitflags 2.5.0, glob 0.3.1, log 0.4.21, num-bigint 0.4.5, num-derive 0.4.2, num-integer 0.1.46, num-traits 0.2.19, range-map 0.2.0, regex 1.10.4, regex-automata 0.4.6, regex-syntax 0.8.3
|
||||
|
||||
```
|
||||
Copyright (c) 2014 The Rust Project Developers
|
||||
|
@ -6621,7 +6621,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## uuid 1.7.0
|
||||
## uuid 1.8.0
|
||||
|
||||
```
|
||||
Copyright (c) 2014 The Rust Project Developers
|
||||
|
@ -6679,7 +6679,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## libc 0.2.153
|
||||
## libc 0.2.155
|
||||
|
||||
```
|
||||
Copyright (c) 2014-2020 The Rust Project Developers
|
||||
|
@ -6735,7 +6735,7 @@ THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## either 1.10.0, itertools 0.11.0, itertools 0.12.1, petgraph 0.6.4
|
||||
## either 1.12.0, itertools 0.12.1, petgraph 0.6.5
|
||||
|
||||
```
|
||||
Copyright (c) 2015
|
||||
|
@ -6817,7 +6817,7 @@ THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## anstyle-wincon 3.0.2
|
||||
## anstyle-wincon 3.0.3
|
||||
|
||||
```
|
||||
Copyright (c) 2015 Josh Triplett, 2022 The rust-cli Developers
|
||||
|
@ -7283,7 +7283,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## hashbrown 0.12.3, hashbrown 0.14.3
|
||||
## hashbrown 0.12.3, hashbrown 0.14.5
|
||||
|
||||
```
|
||||
Copyright (c) 2016 Amanieu d'Antras
|
||||
|
@ -7345,7 +7345,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## anstyle-parse 0.2.3
|
||||
## anstyle-parse 0.2.4
|
||||
|
||||
```
|
||||
Copyright (c) 2016 Joe Wilm and individual contributors
|
||||
|
@ -7376,7 +7376,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## rustls 0.23.4, rustls-native-certs 0.7.0, rustls-pemfile 2.1.2
|
||||
## rustls 0.23.8, rustls-native-certs 0.7.0, rustls-pemfile 2.1.2
|
||||
|
||||
```
|
||||
Copyright (c) 2016 Joseph Birr-Pixton <jpixton@gmail.com>
|
||||
|
@ -7558,7 +7558,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## multimap 0.8.3
|
||||
## multimap 0.10.0
|
||||
|
||||
```
|
||||
Copyright (c) 2016 multimap developers
|
||||
|
@ -7589,7 +7589,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## indexmap 1.9.3, indexmap 2.2.5
|
||||
## indexmap 1.9.3, indexmap 2.2.6
|
||||
|
||||
```
|
||||
Copyright (c) 2016--2017
|
||||
|
@ -7940,7 +7940,7 @@ SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## h2 0.4.4
|
||||
## h2 0.4.5
|
||||
|
||||
```
|
||||
Copyright (c) 2017 h2 authors
|
||||
|
@ -8065,7 +8065,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## bytes 1.5.0
|
||||
## bytes 1.6.0
|
||||
|
||||
```
|
||||
Copyright (c) 2018 Carl Lerche
|
||||
|
@ -8127,7 +8127,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## autocfg 1.1.0
|
||||
## autocfg 1.3.0
|
||||
|
||||
```
|
||||
Copyright (c) 2018 Josh Stone
|
||||
|
@ -8158,7 +8158,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## smallvec 1.13.1
|
||||
## smallvec 1.13.2
|
||||
|
||||
```
|
||||
Copyright (c) 2018 The Servo Project Developers
|
||||
|
@ -8277,7 +8277,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## platforms 3.3.0
|
||||
## platforms 3.4.0
|
||||
|
||||
```
|
||||
Copyright (c) 2018-2020 The Rust Secure Code Working Group
|
||||
|
@ -8398,7 +8398,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## getrandom 0.2.12
|
||||
## getrandom 0.2.15
|
||||
|
||||
```
|
||||
Copyright (c) 2018-2024 The rust-random Project Developers
|
||||
|
@ -8796,7 +8796,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## downcast-rs 1.2.0
|
||||
## downcast-rs 1.2.1
|
||||
|
||||
```
|
||||
Copyright (c) 2020 Ashish Myles and contributors
|
||||
|
@ -9040,7 +9040,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## anstyle 1.0.6
|
||||
## anstyle 1.0.7
|
||||
|
||||
```
|
||||
Copyright (c) 2022 The rust-cli Developers
|
||||
|
@ -9090,7 +9090,7 @@ SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## rustls-pki-types 1.4.1
|
||||
## rustls-pki-types 1.7.0
|
||||
|
||||
```
|
||||
Copyright (c) 2023 Dirkjan Ochtman <dirkjan@ochtman.nl>
|
||||
|
@ -9171,7 +9171,7 @@ SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## hyper-util 0.1.3
|
||||
## hyper-util 0.1.4
|
||||
|
||||
```
|
||||
Copyright (c) 2023 Sean McArthur
|
||||
|
@ -9196,7 +9196,7 @@ THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## tokio 1.36.0, tokio-macros 2.2.0, tokio-stream 0.1.14, tokio-util 0.7.10
|
||||
## tokio 1.37.0, tokio-macros 2.2.0, tokio-stream 0.1.15, tokio-util 0.7.11
|
||||
|
||||
```
|
||||
Copyright (c) 2023 Tokio Contributors
|
||||
|
@ -9227,7 +9227,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## time 0.3.34
|
||||
## time 0.3.36
|
||||
|
||||
```
|
||||
Copyright (c) 2024 Jacob Pratt et al.
|
||||
|
@ -9252,7 +9252,7 @@ SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## anstream 0.6.13, anstyle-query 1.0.2, clap 4.4.18, colorchoice 1.0.0, env_logger 0.10.2, toml_datetime 0.6.5, toml_edit 0.19.15
|
||||
## anstream 0.6.14, anstyle-query 1.0.3, clap 4.4.18, colorchoice 1.0.1, env_logger 0.10.2, is_terminal_polyfill 1.70.0, toml_datetime 0.6.6, toml_edit 0.19.15
|
||||
|
||||
```
|
||||
Copyright (c) Individual contributors
|
||||
|
@ -9352,7 +9352,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## encoding_rs 0.8.33
|
||||
## encoding_rs 0.8.34
|
||||
|
||||
```
|
||||
Copyright Mozilla Foundation
|
||||
|
@ -9464,7 +9464,7 @@ SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## miniz_oxide 0.7.2
|
||||
## miniz_oxide 0.7.3
|
||||
|
||||
```
|
||||
MIT License
|
||||
|
@ -9572,7 +9572,7 @@ SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## crc32fast 1.4.0
|
||||
## crc32fast 1.4.2
|
||||
|
||||
```
|
||||
MIT License
|
||||
|
@ -9626,6 +9626,33 @@ SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## macro_rules_attribute 0.2.0, macro_rules_attribute-proc_macro 0.2.0
|
||||
|
||||
```
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019 Daniel Henry-Mantilla <daniel.henry.mantilla@gmail.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
```
|
||||
|
||||
## strum 0.26.2, strum_macros 0.26.2
|
||||
|
||||
```
|
||||
|
@ -9868,7 +9895,7 @@ SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## cesu8 1.1.0, curve25519-dalek-derive 0.1.0, half 2.4.0, pqcrypto-internals 0.2.5, pqcrypto-kyber 0.7.9, pqcrypto-kyber 0.8.1, pqcrypto-traits 0.3.5, rustls-platform-verifier 0.3.1, rustls-platform-verifier-android 0.1.0
|
||||
## cesu8 1.1.0, curve25519-dalek-derive 0.1.0, half 2.4.1, pqcrypto-internals 0.2.5, pqcrypto-kyber 0.7.9, pqcrypto-kyber 0.8.1, pqcrypto-traits 0.3.5, rustls-platform-verifier 0.3.1, rustls-platform-verifier-android 0.1.0
|
||||
|
||||
```
|
||||
MIT License
|
||||
|
@ -9935,7 +9962,7 @@ SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## bytemuck 1.14.3
|
||||
## bytemuck 1.16.0
|
||||
|
||||
```
|
||||
MIT License
|
||||
|
@ -9982,7 +10009,7 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## adler 1.0.2, anyhow 1.0.80, async-trait 0.1.77, dyn-clone 1.0.17, fastrand 2.0.1, home 0.5.9, is-terminal 0.4.12, itoa 1.0.10, linkme 0.3.25, linkme-impl 0.3.25, linux-raw-sys 0.4.13, minimal-lexical 0.2.1, num_enum 0.6.1, num_enum_derive 0.6.1, once_cell 1.19.0, paste 1.0.14, pin-project-lite 0.2.13, prettyplease 0.2.16, proc-macro-crate 1.3.1, proc-macro2 1.0.78, quote 1.0.35, rustc-hash 1.1.0, rustix 0.38.31, rustversion 1.0.14, semver 1.0.22, send_wrapper 0.6.0, serde 1.0.197, serde_derive 1.0.197, serde_json 1.0.114, syn 1.0.109, syn 2.0.52, syn-mid 0.6.0, thiserror 1.0.57, thiserror-impl 1.0.57, unicode-ident 1.0.12, utf-8 0.7.6
|
||||
## adler 1.0.2, anyhow 1.0.86, async-trait 0.1.80, atomic-waker 1.1.2, dyn-clone 1.0.17, fastrand 2.1.0, home 0.5.9, is-terminal 0.4.12, itoa 1.0.11, linkme 0.3.26, linkme-impl 0.3.26, linux-raw-sys 0.4.14, minimal-lexical 0.2.1, num_enum 0.6.1, num_enum_derive 0.6.1, once_cell 1.19.0, paste 1.0.15, pin-project-lite 0.2.14, prettyplease 0.2.20, proc-macro-crate 1.3.1, proc-macro2 1.0.83, quote 1.0.36, rustc-hash 1.1.0, rustix 0.38.34, rustversion 1.0.17, semver 1.0.23, send_wrapper 0.6.0, serde 1.0.202, serde_derive 1.0.202, serde_json 1.0.117, syn 1.0.109, syn 2.0.66, syn-mid 0.6.0, thiserror 1.0.61, thiserror-impl 1.0.61, unicode-ident 1.0.12, utf-8 0.7.6
|
||||
|
||||
```
|
||||
Permission is hereby granted, free of charge, to any
|
||||
|
@ -10154,7 +10181,7 @@ SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## chrono 0.4.35
|
||||
## chrono 0.4.38
|
||||
|
||||
```
|
||||
The MIT License (MIT)
|
||||
|
@ -10180,7 +10207,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|||
THE SOFTWARE.
|
||||
```
|
||||
|
||||
## base64 0.21.7, base64 0.22.0
|
||||
## base64 0.21.7, base64 0.22.1
|
||||
|
||||
```
|
||||
The MIT License (MIT)
|
||||
|
@ -10207,7 +10234,7 @@ THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## aho-corasick 1.1.2, byteorder 1.5.0, memchr 2.7.1, termcolor 1.4.1, walkdir 2.5.0
|
||||
## aho-corasick 1.1.3, byteorder 1.5.0, memchr 2.7.2, termcolor 1.4.1, walkdir 2.5.0
|
||||
|
||||
```
|
||||
The MIT License (MIT)
|
||||
|
@ -10263,7 +10290,7 @@ SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## combine 4.6.6
|
||||
## combine 4.6.7
|
||||
|
||||
```
|
||||
The MIT License (MIT)
|
||||
|
@ -10318,7 +10345,7 @@ THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## security-framework 2.10.0, security-framework-sys 2.10.0
|
||||
## security-framework 2.11.0, security-framework-sys 2.11.0
|
||||
|
||||
```
|
||||
The MIT License (MIT)
|
||||
|
@ -10344,7 +10371,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## data-encoding 2.5.0
|
||||
## data-encoding 2.6.0
|
||||
|
||||
```
|
||||
The MIT License (MIT)
|
||||
|
@ -10480,7 +10507,7 @@ SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## same-file 1.0.6, winapi-util 0.1.6
|
||||
## same-file 1.0.6, winapi-util 0.1.8
|
||||
|
||||
```
|
||||
The MIT License (MIT)
|
||||
|
@ -10507,7 +10534,7 @@ THE SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## async-compression 0.4.6
|
||||
## async-compression 0.4.10
|
||||
|
||||
```
|
||||
The MIT License (MIT)
|
||||
|
@ -10534,7 +10561,40 @@ SOFTWARE.
|
|||
|
||||
```
|
||||
|
||||
## crossbeam-deque 0.8.5, crossbeam-epoch 0.9.18, crossbeam-utils 0.8.19
|
||||
## atomic-take 1.1.0
|
||||
|
||||
```
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2019 Alice Ryhl
|
||||
|
||||
Permission is hereby granted, free of charge, to any
|
||||
person obtaining a copy of this software and associated
|
||||
documentation files (the "Software"), to deal in the
|
||||
Software without restriction, including without
|
||||
limitation the rights to use, copy, modify, merge,
|
||||
publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software
|
||||
is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice
|
||||
shall be included in all copies or substantial portions
|
||||
of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
|
||||
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
|
||||
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
|
||||
SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
||||
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
```
|
||||
|
||||
## crossbeam-deque 0.8.5, crossbeam-epoch 0.9.18, crossbeam-utils 0.8.20
|
||||
|
||||
```
|
||||
The MIT License (MIT)
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"@react-aria/utils": "3.16.0",
|
||||
"@react-spring/web": "9.5.5",
|
||||
"@signalapp/better-sqlite3": "8.7.1",
|
||||
"@signalapp/libsignal-client": "0.46.2",
|
||||
"@signalapp/libsignal-client": "0.50.0",
|
||||
"@signalapp/ringrtc": "2.42.0",
|
||||
"@signalapp/windows-dummy-keystroke": "1.0.0",
|
||||
"@types/fabric": "4.5.3",
|
||||
|
|
|
@ -80,16 +80,21 @@ message AccountData {
|
|||
ChatStyle defaultChatStyle = 18;
|
||||
}
|
||||
|
||||
message SubscriberData {
|
||||
bytes subscriberId = 1;
|
||||
string currencyCode = 2;
|
||||
bool manuallyCancelled = 3;
|
||||
}
|
||||
|
||||
bytes profileKey = 1;
|
||||
optional string username = 2;
|
||||
UsernameLink usernameLink = 3;
|
||||
string givenName = 4;
|
||||
string familyName = 5;
|
||||
string avatarUrlPath = 6;
|
||||
bytes subscriberId = 7;
|
||||
string subscriberCurrencyCode = 8;
|
||||
bool subscriptionManuallyCancelled = 9;
|
||||
AccountSettings accountSettings = 10;
|
||||
SubscriberData donationSubscriberData = 7;
|
||||
SubscriberData backupsSubscriberData = 8;
|
||||
AccountSettings accountSettings = 9;
|
||||
}
|
||||
|
||||
message Recipient {
|
||||
|
@ -97,7 +102,7 @@ message Recipient {
|
|||
oneof destination {
|
||||
Contact contact = 2;
|
||||
Group group = 3;
|
||||
DistributionList distributionList = 4;
|
||||
DistributionListItem distributionList = 4;
|
||||
Self self = 5;
|
||||
ReleaseNotes releaseNotes = 6;
|
||||
CallLink callLink = 7;
|
||||
|
@ -105,10 +110,15 @@ message Recipient {
|
|||
}
|
||||
|
||||
message Contact {
|
||||
enum Registered {
|
||||
UNKNOWN = 0;
|
||||
REGISTERED = 1;
|
||||
NOT_REGISTERED = 2;
|
||||
message Registered { }
|
||||
message NotRegistered {
|
||||
uint64 unregisteredTimestamp = 1;
|
||||
}
|
||||
|
||||
enum Visibility {
|
||||
VISIBLE = 0;
|
||||
HIDDEN = 1;
|
||||
HIDDEN_MESSAGE_REQUEST = 2;
|
||||
}
|
||||
|
||||
optional bytes aci = 1; // should be 16 bytes
|
||||
|
@ -116,9 +126,13 @@ message Contact {
|
|||
optional string username = 3;
|
||||
optional uint64 e164 = 4;
|
||||
bool blocked = 5;
|
||||
bool hidden = 6;
|
||||
Visibility visibility = 6;
|
||||
|
||||
oneof registration {
|
||||
Registered registered = 7;
|
||||
uint64 unregisteredTimestamp = 8;
|
||||
NotRegistered notRegistered = 8;
|
||||
}
|
||||
|
||||
optional bytes profileKey = 9;
|
||||
bool profileSharing = 10;
|
||||
optional string profileGivenName = 11;
|
||||
|
@ -267,6 +281,15 @@ message AdHocCall {
|
|||
uint64 callTimestamp = 4;
|
||||
}
|
||||
|
||||
message DistributionListItem {
|
||||
bytes distributionId = 1; // distribution list ids are uuids
|
||||
|
||||
oneof item {
|
||||
uint64 deletionTimestamp = 2;
|
||||
DistributionList distributionList = 3;
|
||||
}
|
||||
}
|
||||
|
||||
message DistributionList {
|
||||
enum PrivacyMode {
|
||||
UNKNOWN = 0;
|
||||
|
@ -276,11 +299,9 @@ message DistributionList {
|
|||
}
|
||||
|
||||
string name = 1;
|
||||
bytes distributionId = 2; // distribution list ids are uuids
|
||||
bool allowReplies = 3;
|
||||
uint64 deletionTimestamp = 4;
|
||||
PrivacyMode privacyMode = 5;
|
||||
repeated uint64 memberRecipientIds = 6; // generated recipient id
|
||||
bool allowReplies = 2;
|
||||
PrivacyMode privacyMode = 3;
|
||||
repeated uint64 memberRecipientIds = 4; // generated recipient id
|
||||
}
|
||||
|
||||
message Identity {
|
||||
|
@ -646,6 +667,7 @@ message ChatUpdateMessage {
|
|||
SessionSwitchoverChatUpdate sessionSwitchover = 6;
|
||||
IndividualCall individualCall = 7;
|
||||
GroupCall groupCall = 8;
|
||||
LearnedProfileChatUpdate learnedProfileChange = 9;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -743,6 +765,13 @@ message ProfileChangeChatUpdate {
|
|||
string newName = 2;
|
||||
}
|
||||
|
||||
message LearnedProfileChatUpdate {
|
||||
oneof previousName {
|
||||
uint64 e164 = 1;
|
||||
string username = 2;
|
||||
}
|
||||
}
|
||||
|
||||
message ThreadMergeChatUpdate {
|
||||
uint64 previousE164 = 1;
|
||||
}
|
||||
|
|
|
@ -206,6 +206,8 @@ message AccountRecord {
|
|||
optional string username = 33;
|
||||
optional bool hasCompletedUsernameOnboarding = 34;
|
||||
optional UsernameLink usernameLink = 35;
|
||||
optional bytes backupsSubscriberId = 36;
|
||||
optional string backupsSubscriberCurrencyCode = 37;
|
||||
}
|
||||
|
||||
message StoryDistributionListRecord {
|
||||
|
|
|
@ -3373,6 +3373,10 @@ export class ConversationModel extends window.Backbone
|
|||
return;
|
||||
}
|
||||
|
||||
if (this.attributes.removalStage !== 'justNotification') {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.get('pendingRemovedContactNotification')) {
|
||||
return;
|
||||
}
|
||||
|
@ -4140,6 +4144,11 @@ export class ConversationModel extends window.Backbone
|
|||
this.maybeSetPendingUniversalTimer(stats.hasUserInitiatedMessages)
|
||||
)
|
||||
);
|
||||
drop(
|
||||
this.queueJob('maybeAddRemovedNotificaiton', async () =>
|
||||
this.maybeSetContactRemoved()
|
||||
)
|
||||
);
|
||||
|
||||
const { preview, activity } = stats;
|
||||
let previewMessage: MessageModel | undefined;
|
||||
|
|
|
@ -70,6 +70,7 @@ import {
|
|||
isVerifiedChange,
|
||||
isChangeNumberNotification,
|
||||
isJoinedSignalNotification,
|
||||
isTitleTransitionNotification,
|
||||
} from '../../state/selectors/message';
|
||||
import * as Bytes from '../../Bytes';
|
||||
import { canBeSynced as canPreferredReactionEmojiBeSynced } from '../../reactions/preferredReactionEmoji';
|
||||
|
@ -258,18 +259,23 @@ export class BackupExportStream extends Readable {
|
|||
recipient: {
|
||||
id: this.getDistributionListRecipientId(),
|
||||
distributionList: {
|
||||
name: list.name,
|
||||
distributionId: uuidToBytes(list.id),
|
||||
allowReplies: list.allowsReplies,
|
||||
deletionTimestamp: list.deletedAtTimestamp
|
||||
? Long.fromNumber(list.deletedAtTimestamp)
|
||||
: null,
|
||||
|
||||
distributionList: list.deletedAtTimestamp
|
||||
? null
|
||||
: {
|
||||
name: list.name,
|
||||
allowReplies: list.allowsReplies,
|
||||
privacyMode,
|
||||
memberRecipientIds: list.members.map(serviceId =>
|
||||
this.getOrPushPrivateRecipient({ serviceId })
|
||||
),
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
|
@ -451,6 +457,9 @@ export class BackupExportStream extends Readable {
|
|||
|
||||
const usernameLink = storage.get('usernameLink');
|
||||
|
||||
const subscriberId = storage.get('subscriberId');
|
||||
const backupsSubscriberId = storage.get('backupsSubscriberId');
|
||||
|
||||
return {
|
||||
profileKey: storage.get('profileKey'),
|
||||
username: me.get('username') || null,
|
||||
|
@ -465,8 +474,18 @@ export class BackupExportStream extends Readable {
|
|||
givenName: me.get('profileName'),
|
||||
familyName: me.get('profileFamilyName'),
|
||||
avatarUrlPath: storage.get('avatarUrl'),
|
||||
subscriberId: storage.get('subscriberId'),
|
||||
subscriberCurrencyCode: storage.get('subscriberCurrencyCode'),
|
||||
backupsSubscriberData: Bytes.isNotEmpty(backupsSubscriberId)
|
||||
? {
|
||||
subscriberId: backupsSubscriberId,
|
||||
currencyCode: storage.get('backupsSubscriberCurrencyCode'),
|
||||
}
|
||||
: null,
|
||||
donationSubscriberData: Bytes.isNotEmpty(subscriberId)
|
||||
? {
|
||||
subscriberId,
|
||||
currencyCode: storage.get('subscriberCurrencyCode'),
|
||||
}
|
||||
: null,
|
||||
accountSettings: {
|
||||
readReceipts: storage.get('read-receipt-setting'),
|
||||
sealedSenderIndicators: storage.get('sealedSenderIndicators'),
|
||||
|
@ -567,7 +586,17 @@ export class BackupExportStream extends Readable {
|
|||
if (isMe(convo)) {
|
||||
res.self = {};
|
||||
} else if (isDirectConversation(convo)) {
|
||||
const { Registered } = Backups.Contact;
|
||||
let visibility: Backups.Contact.Visibility;
|
||||
if (convo.removalStage == null) {
|
||||
visibility = Backups.Contact.Visibility.VISIBLE;
|
||||
} else if (convo.removalStage === 'justNotification') {
|
||||
visibility = Backups.Contact.Visibility.HIDDEN;
|
||||
} else if (convo.removalStage === 'messageRequest') {
|
||||
visibility = Backups.Contact.Visibility.HIDDEN_MESSAGE_REQUEST;
|
||||
} else {
|
||||
throw missingCaseError(convo.removalStage);
|
||||
}
|
||||
|
||||
res.contact = {
|
||||
aci:
|
||||
convo.serviceId && convo.serviceId !== convo.pni
|
||||
|
@ -581,13 +610,18 @@ export class BackupExportStream extends Readable {
|
|||
blocked: convo.serviceId
|
||||
? window.storage.blocked.isServiceIdBlocked(convo.serviceId)
|
||||
: null,
|
||||
hidden: convo.removalStage !== undefined,
|
||||
registered: isConversationUnregistered(convo)
|
||||
? Registered.NOT_REGISTERED
|
||||
: Registered.REGISTERED,
|
||||
visibility,
|
||||
...(isConversationUnregistered(convo)
|
||||
? {
|
||||
notRegistered: {
|
||||
unregisteredTimestamp: convo.firstUnregisteredAt
|
||||
? Long.fromNumber(convo.firstUnregisteredAt)
|
||||
: null,
|
||||
},
|
||||
}
|
||||
: {
|
||||
registered: {},
|
||||
}),
|
||||
profileKey: convo.profileKey
|
||||
? Bytes.fromBase64(convo.profileKey)
|
||||
: null,
|
||||
|
@ -1089,6 +1123,27 @@ export class BackupExportStream extends Readable {
|
|||
return { kind: NonBubbleResultKind.Directionless, patch };
|
||||
}
|
||||
|
||||
if (isTitleTransitionNotification(message)) {
|
||||
strictAssert(
|
||||
message.titleTransition != null,
|
||||
'Missing title transition data'
|
||||
);
|
||||
const { renderInfo } = message.titleTransition;
|
||||
if (renderInfo.e164) {
|
||||
updateMessage.learnedProfileChange = {
|
||||
e164: Long.fromString(renderInfo.e164),
|
||||
};
|
||||
} else {
|
||||
strictAssert(
|
||||
renderInfo.username,
|
||||
'Title transition must have username or e164'
|
||||
);
|
||||
updateMessage.learnedProfileChange = { username: renderInfo.username };
|
||||
}
|
||||
|
||||
return { kind: NonBubbleResultKind.Directionless, patch };
|
||||
}
|
||||
|
||||
if (isDeliveryIssue(message)) {
|
||||
updateMessage.simpleUpdate = {
|
||||
type: Backups.SimpleChatUpdate.Type.BAD_DECRYPT,
|
||||
|
@ -1129,7 +1184,6 @@ export class BackupExportStream extends Readable {
|
|||
|
||||
if (isContactRemovedNotification(message)) {
|
||||
// Transient, drop it
|
||||
// TODO: DESKTOP-7124
|
||||
return { kind: NonBubbleResultKind.Drop };
|
||||
}
|
||||
|
||||
|
@ -1138,9 +1192,8 @@ export class BackupExportStream extends Readable {
|
|||
}
|
||||
|
||||
if (isGroupUpdate(message)) {
|
||||
// TODO (DESKTOP-6964)
|
||||
// these old-school message types are no longer generated but we probably
|
||||
// still want to render them
|
||||
// GV1 is deprecated.
|
||||
return { kind: NonBubbleResultKind.Drop };
|
||||
}
|
||||
|
||||
if (isUnsupportedMessage(message)) {
|
||||
|
|
|
@ -9,6 +9,7 @@ import { isNumber } from 'lodash';
|
|||
|
||||
import { Backups, SignalService } from '../../protobuf';
|
||||
import Data from '../../sql/Client';
|
||||
import type { StoryDistributionWithMembersType } from '../../sql/Interface';
|
||||
import * as log from '../../logging/log';
|
||||
import { StorySendMode } from '../../types/Stories';
|
||||
import type { ServiceIdString, AciString } from '../../types/ServiceId';
|
||||
|
@ -426,8 +427,8 @@ export class BackupImportStream extends Writable {
|
|||
givenName,
|
||||
familyName,
|
||||
avatarUrlPath,
|
||||
subscriberId,
|
||||
subscriberCurrencyCode,
|
||||
backupsSubscriberData,
|
||||
donationSubscriberData,
|
||||
accountSettings,
|
||||
}: Backups.IAccountData): Promise<void> {
|
||||
strictAssert(this.ourConversation === undefined, 'Duplicate AccountData');
|
||||
|
@ -466,11 +467,23 @@ export class BackupImportStream extends Writable {
|
|||
if (avatarUrlPath != null) {
|
||||
await storage.put('avatarUrl', avatarUrlPath);
|
||||
}
|
||||
if (subscriberId != null) {
|
||||
if (donationSubscriberData != null) {
|
||||
const { subscriberId, currencyCode } = donationSubscriberData;
|
||||
if (Bytes.isNotEmpty(subscriberId)) {
|
||||
await storage.put('subscriberId', subscriberId);
|
||||
}
|
||||
if (subscriberCurrencyCode != null) {
|
||||
await storage.put('subscriberCurrencyCode', subscriberCurrencyCode);
|
||||
if (currencyCode != null) {
|
||||
await storage.put('subscriberCurrencyCode', currencyCode);
|
||||
}
|
||||
}
|
||||
if (backupsSubscriberData != null) {
|
||||
const { subscriberId, currencyCode } = backupsSubscriberData;
|
||||
if (Bytes.isNotEmpty(subscriberId)) {
|
||||
await storage.put('backupsSubscriberId', subscriberId);
|
||||
}
|
||||
if (currencyCode != null) {
|
||||
await storage.put('backupsSubscriberCurrencyCode', currencyCode);
|
||||
}
|
||||
}
|
||||
|
||||
await storage.put(
|
||||
|
@ -576,6 +589,20 @@ export class BackupImportStream extends Writable {
|
|||
: undefined;
|
||||
const e164 = contact.e164 ? `+${contact.e164}` : undefined;
|
||||
|
||||
let removalStage: 'justNotification' | 'messageRequest' | undefined;
|
||||
switch (contact.visibility) {
|
||||
case Backups.Contact.Visibility.HIDDEN:
|
||||
removalStage = 'justNotification';
|
||||
break;
|
||||
case Backups.Contact.Visibility.HIDDEN_MESSAGE_REQUEST:
|
||||
removalStage = 'messageRequest';
|
||||
break;
|
||||
case Backups.Contact.Visibility.VISIBLE:
|
||||
default:
|
||||
removalStage = undefined;
|
||||
break;
|
||||
}
|
||||
|
||||
const attrs: ConversationAttributesType = {
|
||||
id: generateUuid(),
|
||||
type: 'private',
|
||||
|
@ -583,7 +610,7 @@ export class BackupImportStream extends Writable {
|
|||
serviceId: aci ?? pni,
|
||||
pni,
|
||||
e164,
|
||||
removalStage: contact.hidden ? 'messageRequest' : undefined,
|
||||
removalStage,
|
||||
profileKey: contact.profileKey
|
||||
? Bytes.toBase64(contact.profileKey)
|
||||
: undefined,
|
||||
|
@ -593,10 +620,16 @@ export class BackupImportStream extends Writable {
|
|||
hideStory: contact.hideStory === true,
|
||||
};
|
||||
|
||||
if (contact.registered === Backups.Contact.Registered.NOT_REGISTERED) {
|
||||
const timestamp = contact.unregisteredTimestamp?.toNumber() ?? Date.now();
|
||||
if (contact.notRegistered) {
|
||||
const timestamp =
|
||||
contact.notRegistered.unregisteredTimestamp?.toNumber() ?? Date.now();
|
||||
attrs.discoveredUnregisteredAt = timestamp;
|
||||
attrs.firstUnregisteredAt = timestamp;
|
||||
} else {
|
||||
strictAssert(
|
||||
contact.registered,
|
||||
'contact is either registered or unregistered'
|
||||
);
|
||||
}
|
||||
|
||||
if (contact.blocked) {
|
||||
|
@ -644,16 +677,32 @@ export class BackupImportStream extends Writable {
|
|||
}
|
||||
|
||||
private async fromDistributionList(
|
||||
list: Backups.IDistributionList
|
||||
listItem: Backups.IDistributionListItem
|
||||
): Promise<void> {
|
||||
strictAssert(
|
||||
Bytes.isNotEmpty(list.distributionId),
|
||||
Bytes.isNotEmpty(listItem.distributionId),
|
||||
'Missing distribution list id'
|
||||
);
|
||||
|
||||
const id = bytesToUuid(list.distributionId);
|
||||
const id = bytesToUuid(listItem.distributionId);
|
||||
strictAssert(isStoryDistributionId(id), 'Invalid distribution list id');
|
||||
|
||||
const commonFields = {
|
||||
id,
|
||||
|
||||
// Default values
|
||||
senderKeyInfo: undefined,
|
||||
storageNeedsSync: false,
|
||||
};
|
||||
|
||||
let result: StoryDistributionWithMembersType;
|
||||
if (listItem.deletionTimestamp == null) {
|
||||
const { distributionList: list } = listItem;
|
||||
strictAssert(
|
||||
list != null,
|
||||
'Distribution list is either present or deleted'
|
||||
);
|
||||
|
||||
strictAssert(
|
||||
list.privacyMode != null,
|
||||
'Missing distribution list privacy mode'
|
||||
|
@ -685,13 +734,9 @@ export class BackupImportStream extends Writable {
|
|||
throw missingCaseError(list.privacyMode);
|
||||
}
|
||||
|
||||
const result = {
|
||||
id,
|
||||
result = {
|
||||
...commonFields,
|
||||
name: list.name ?? '',
|
||||
deletedAtTimestamp:
|
||||
list.deletionTimestamp == null
|
||||
? undefined
|
||||
: getTimestampFromLong(list.deletionTimestamp),
|
||||
allowsReplies: list.allowReplies === true,
|
||||
isBlockList,
|
||||
members: (list.memberRecipientIds || []).map(recipientId => {
|
||||
|
@ -704,11 +749,19 @@ export class BackupImportStream extends Writable {
|
|||
|
||||
return convo.serviceId;
|
||||
}),
|
||||
|
||||
// Default values
|
||||
senderKeyInfo: undefined,
|
||||
storageNeedsSync: false,
|
||||
};
|
||||
} else {
|
||||
result = {
|
||||
...commonFields,
|
||||
|
||||
name: '',
|
||||
allowsReplies: false,
|
||||
isBlockList: false,
|
||||
members: [],
|
||||
|
||||
deletedAtTimestamp: getTimestampFromLong(listItem.deletionTimestamp),
|
||||
};
|
||||
}
|
||||
|
||||
await Data.createNewStoryDistribution(result);
|
||||
}
|
||||
|
@ -1426,6 +1479,27 @@ export class BackupImportStream extends Writable {
|
|||
};
|
||||
}
|
||||
|
||||
if (updateMessage.learnedProfileChange) {
|
||||
const { e164, username } = updateMessage.learnedProfileChange;
|
||||
strictAssert(
|
||||
e164 != null || username != null,
|
||||
'learnedProfileChange must have an old name'
|
||||
);
|
||||
return {
|
||||
message: {
|
||||
type: 'title-transition-notification',
|
||||
titleTransition: {
|
||||
renderInfo: {
|
||||
type: 'private',
|
||||
e164: e164 && !e164.isZero() ? `+${e164}` : undefined,
|
||||
username: dropNull(username),
|
||||
},
|
||||
},
|
||||
},
|
||||
additionalMessages: [],
|
||||
};
|
||||
}
|
||||
|
||||
if (updateMessage.threadMerge) {
|
||||
const { previousE164 } = updateMessage.threadMerge;
|
||||
strictAssert(previousE164 != null, 'threadMerge must have an old e164');
|
||||
|
|
|
@ -388,13 +388,25 @@ export function toAccountRecord(
|
|||
accountRecord.pinnedConversations = pinnedConversations;
|
||||
|
||||
const subscriberId = window.storage.get('subscriberId');
|
||||
if (subscriberId instanceof Uint8Array) {
|
||||
if (Bytes.isNotEmpty(subscriberId)) {
|
||||
accountRecord.subscriberId = subscriberId;
|
||||
}
|
||||
const subscriberCurrencyCode = window.storage.get('subscriberCurrencyCode');
|
||||
const subscriberCurrencyCode = window.storage.get(
|
||||
'backupsSubscriberCurrencyCode'
|
||||
);
|
||||
if (typeof subscriberCurrencyCode === 'string') {
|
||||
accountRecord.subscriberCurrencyCode = subscriberCurrencyCode;
|
||||
}
|
||||
const backupsSubscriberId = window.storage.get('backupsSubscriberId');
|
||||
if (Bytes.isNotEmpty(backupsSubscriberId)) {
|
||||
accountRecord.backupsSubscriberId = backupsSubscriberId;
|
||||
}
|
||||
const backupsSubscriberCurrencyCode = window.storage.get(
|
||||
'backupsSubscriberCurrencyCode'
|
||||
);
|
||||
if (typeof backupsSubscriberCurrencyCode === 'string') {
|
||||
accountRecord.backupsSubscriberCurrencyCode = backupsSubscriberCurrencyCode;
|
||||
}
|
||||
const displayBadgesOnProfile = window.storage.get('displayBadgesOnProfile');
|
||||
if (displayBadgesOnProfile !== undefined) {
|
||||
accountRecord.displayBadgesOnProfile = displayBadgesOnProfile;
|
||||
|
@ -1223,6 +1235,8 @@ export async function mergeAccountRecord(
|
|||
preferredReactionEmoji: rawPreferredReactionEmoji,
|
||||
subscriberId,
|
||||
subscriberCurrencyCode,
|
||||
backupsSubscriberId,
|
||||
backupsSubscriberCurrencyCode,
|
||||
displayBadgesOnProfile,
|
||||
keepMutedChatsArchived,
|
||||
hasCompletedUsernameOnboarding,
|
||||
|
@ -1428,12 +1442,21 @@ export async function mergeAccountRecord(
|
|||
);
|
||||
}
|
||||
|
||||
if (subscriberId instanceof Uint8Array) {
|
||||
if (Bytes.isNotEmpty(subscriberId)) {
|
||||
await window.storage.put('subscriberId', subscriberId);
|
||||
}
|
||||
if (typeof subscriberCurrencyCode === 'string') {
|
||||
await window.storage.put('subscriberCurrencyCode', subscriberCurrencyCode);
|
||||
}
|
||||
if (Bytes.isNotEmpty(backupsSubscriberId)) {
|
||||
await window.storage.put('backupsSubscriberId', backupsSubscriberId);
|
||||
}
|
||||
if (typeof backupsSubscriberCurrencyCode === 'string') {
|
||||
await window.storage.put(
|
||||
'backupsSubscriberCurrencyCode',
|
||||
backupsSubscriberCurrencyCode
|
||||
);
|
||||
}
|
||||
await window.storage.put(
|
||||
'displayBadgesOnProfile',
|
||||
Boolean(displayBadgesOnProfile)
|
||||
|
|
|
@ -418,6 +418,26 @@ describe('backup/non-bubble messages', () => {
|
|||
]);
|
||||
});
|
||||
|
||||
it('roundtrips title transition notification', async () => {
|
||||
await symmetricRoundtripHarness([
|
||||
{
|
||||
conversationId: contactA.id,
|
||||
id: generateGuid(),
|
||||
type: 'title-transition-notification',
|
||||
received_at: 1,
|
||||
sent_at: 1,
|
||||
timestamp: 1,
|
||||
sourceServiceId: CONTACT_A,
|
||||
titleTransition: {
|
||||
renderInfo: {
|
||||
type: 'private',
|
||||
e164: '+12125551234',
|
||||
},
|
||||
},
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
it('roundtrips thread merge', async () => {
|
||||
await symmetricRoundtripHarness([
|
||||
{
|
||||
|
|
2
ts/types/Storage.d.ts
vendored
2
ts/types/Storage.d.ts
vendored
|
@ -154,6 +154,8 @@ export type StorageAccessType = {
|
|||
areWeASubscriber: boolean;
|
||||
subscriberId: Uint8Array;
|
||||
subscriberCurrencyCode: string;
|
||||
backupsSubscriberId: Uint8Array;
|
||||
backupsSubscriberCurrencyCode: string;
|
||||
displayBadgesOnProfile: boolean;
|
||||
keepMutedChatsArchived: boolean;
|
||||
usernameLastIntegrityCheck: number;
|
||||
|
|
49
yarn.lock
49
yarn.lock
|
@ -3993,10 +3993,10 @@
|
|||
bindings "^1.5.0"
|
||||
tar "^6.1.0"
|
||||
|
||||
"@signalapp/libsignal-client@0.46.2":
|
||||
version "0.46.2"
|
||||
resolved "https://registry.yarnpkg.com/@signalapp/libsignal-client/-/libsignal-client-0.46.2.tgz#5f6139a7f585259dc5603ef27990b345afbbcc60"
|
||||
integrity sha512-N6nfIkp3tkMQ1SCYMEOp8jdCiikWjjvkvHAp0M+FMA6dkrhj011nvDWjRAWNj+mCGmJCrLEqrhahaDKChWwHsg==
|
||||
"@signalapp/libsignal-client@0.50.0":
|
||||
version "0.50.0"
|
||||
resolved "https://registry.yarnpkg.com/@signalapp/libsignal-client/-/libsignal-client-0.50.0.tgz#5cff29a49b658916aa277943d0fc01a2668ef0c6"
|
||||
integrity sha512-sMkcdVEAZBCEMl6NoMX7jvuV+V3nEasCFe/j1ch+f/Dja4dkyMZovoBki6NqeU5rAry7Vj8ynJiMYAfpwCH8YA==
|
||||
dependencies:
|
||||
node-gyp-build "^4.2.3"
|
||||
type-fest "^3.5.0"
|
||||
|
@ -7617,7 +7617,7 @@ caniuse-lite@^1.0.30001349, caniuse-lite@^1.0.30001541:
|
|||
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz"
|
||||
integrity sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw==
|
||||
|
||||
canvas@^2.6.1, "canvas@https://registry.yarnpkg.com/nop/-/nop-1.0.0.tgz", dmg-license@^1.0.11, "dmg-license@https://registry.yarnpkg.com/nop/-/nop-1.0.0.tgz", jsdom@^15.2.1, "jsdom@https://registry.yarnpkg.com/nop/-/nop-1.0.0.tgz":
|
||||
canvas@^2.6.1, "canvas@https://registry.yarnpkg.com/nop/-/nop-1.0.0.tgz":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/nop/-/nop-1.0.0.tgz#cb46cf7e01574aa6390858149f66897afe53c9ca"
|
||||
|
||||
|
@ -9028,6 +9028,10 @@ dmg-builder@24.6.3:
|
|||
optionalDependencies:
|
||||
dmg-license "^1.0.11"
|
||||
|
||||
dmg-license@^1.0.11, "dmg-license@https://registry.yarnpkg.com/nop/-/nop-1.0.0.tgz":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/nop/-/nop-1.0.0.tgz#cb46cf7e01574aa6390858149f66897afe53c9ca"
|
||||
|
||||
dns-equal@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
|
||||
|
@ -13537,6 +13541,10 @@ jsdoc@^4.0.0:
|
|||
strip-json-comments "^3.1.0"
|
||||
underscore "~1.13.2"
|
||||
|
||||
jsdom@^15.2.1, "jsdom@https://registry.yarnpkg.com/nop/-/nop-1.0.0.tgz":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/nop/-/nop-1.0.0.tgz#cb46cf7e01574aa6390858149f66897afe53c9ca"
|
||||
|
||||
jsesc@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
|
||||
|
@ -18719,7 +18727,7 @@ string-length@^5.0.1:
|
|||
char-regex "^2.0.0"
|
||||
strip-ansi "^7.0.1"
|
||||
|
||||
"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.2.3:
|
||||
"string-width-cjs@npm:string-width@^4.2.0":
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||
|
@ -18763,6 +18771,15 @@ string-width@^4.1.0, string-width@^4.2.0:
|
|||
is-fullwidth-code-point "^3.0.0"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
string-width@^4.2.3:
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||
dependencies:
|
||||
emoji-regex "^8.0.0"
|
||||
is-fullwidth-code-point "^3.0.0"
|
||||
strip-ansi "^6.0.1"
|
||||
|
||||
string-width@^5.0.1, string-width@^5.1.2:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794"
|
||||
|
@ -18843,7 +18860,7 @@ string_decoder@~1.1.1:
|
|||
dependencies:
|
||||
safe-buffer "~5.1.0"
|
||||
|
||||
"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.1:
|
||||
"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||
|
@ -18878,6 +18895,13 @@ strip-ansi@^6.0.0:
|
|||
dependencies:
|
||||
ansi-regex "^5.0.0"
|
||||
|
||||
strip-ansi@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||
dependencies:
|
||||
ansi-regex "^5.0.1"
|
||||
|
||||
strip-ansi@^7.0.1:
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
|
||||
|
@ -20529,7 +20553,7 @@ workerpool@6.2.1:
|
|||
resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343"
|
||||
integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==
|
||||
|
||||
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
|
||||
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
||||
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
||||
|
@ -20564,6 +20588,15 @@ wrap-ansi@^6.2.0:
|
|||
string-width "^4.1.0"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
wrap-ansi@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
||||
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
||||
dependencies:
|
||||
ansi-styles "^4.0.0"
|
||||
string-width "^4.1.0"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
wrap-ansi@^8.1.0:
|
||||
version "8.1.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"
|
||||
|
|
Loading…
Add table
Reference in a new issue